/**/
var M = document.querySelector('meta[name="generator"]').getAttribute('data-variable'),
	D = M.split(',');
M = new Array();
M['weburl'] = D[0];
M['lang'] = D[1];
M['classnow'] = parseInt(D[2]);
M['id'] = parseInt(D[3]);
M['module'] = parseInt(D[4]);
M['tem'] = D[0] + 'templates/' + D[5];
var deviceType = /iPad/.test(navigator.userAgent) ? 't' : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(
		navigator.userAgent) ? 'm' : 'p',
	ucBro = /UC/.test(navigator.userAgent);
/*jquery.min.js*/
/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
! function(a, b) {
	"object" == typeof module && "object" == typeof module.exports ? module.exports = a.document ? b(a, !0) : function(a) {
		if (!a.document) throw new Error("jQuery requires a window with a document");
		return b(a)
	} : b(a)
}("undefined" != typeof window ? window : this, function(a, b) {
	var c = [],
		d = c.slice,
		e = c.concat,
		f = c.push,
		g = c.indexOf,
		h = {},
		i = h.toString,
		j = h.hasOwnProperty,
		k = {},
		l = "1.11.3",
		m = function(a, b) {
			return new m.fn.init(a, b)
		},
		n = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
		o = /^-ms-/,
		p = /-([\da-z])/gi,
		q = function(a, b) {
			return b.toUpperCase()
		};
	m.fn = m.prototype = {
		jquery: l,
		constructor: m,
		selector: "",
		length: 0,
		toArray: function() {
			return d.call(this)
		},
		get: function(a) {
			return null != a ? 0 > a ? this[a + this.length] : this[a] : d.call(this)
		},
		pushStack: function(a) {
			var b = m.merge(this.constructor(), a);
			return b.prevObject = this, b.context = this.context, b
		},
		each: function(a, b) {
			return m.each(this, a, b)
		},
		map: function(a) {
			return this.pushStack(m.map(this, function(b, c) {
				return a.call(b, c, b)
			}))
		},
		slice: function() {
			return this.pushStack(d.apply(this, arguments))
		},
		first: function() {
			return this.eq(0)
		},
		last: function() {
			return this.eq(-1)
		},
		eq: function(a) {
			var b = this.length,
				c = +a + (0 > a ? b : 0);
			return this.pushStack(c >= 0 && b > c ? [this[c]] : [])
		},
		end: function() {
			return this.prevObject || this.constructor(null)
		},
		push: f,
		sort: c.sort,
		splice: c.splice
	}, m.extend = m.fn.extend = function() {
		var a, b, c, d, e, f, g = arguments[0] || {},
			h = 1,
			i = arguments.length,
			j = !1;
		for ("boolean" == typeof g && (j = g, g = arguments[h] || {}, h++), "object" == typeof g || m.isFunction(g) || (g = {}),
			h === i && (g = this, h--); i > h; h++)
			if (null != (e = arguments[h]))
				for (d in e) a = g[d], c = e[d], g !== c && (j && c && (m.isPlainObject(c) || (b = m.isArray(c))) ? (b ? (b = !1,
						f = a && m.isArray(a) ? a : []) : f = a && m.isPlainObject(a) ? a : {}, g[d] = m.extend(j, f, c)) : void 0 !==
					c && (g[d] = c));
		return g
	}, m.extend({
		expando: "jQuery" + (l + Math.random()).replace(/\D/g, ""),
		isReady: !0,
		error: function(a) {
			throw new Error(a)
		},
		noop: function() {},
		isFunction: function(a) {
			return "function" === m.type(a)
		},
		isArray: Array.isArray || function(a) {
			return "array" === m.type(a)
		},
		isWindow: function(a) {
			return null != a && a == a.window
		},
		isNumeric: function(a) {
			return !m.isArray(a) && a - parseFloat(a) + 1 >= 0
		},
		isEmptyObject: function(a) {
			var b;
			for (b in a) return !1;
			return !0
		},
		isPlainObject: function(a) {
			var b;
			if (!a || "object" !== m.type(a) || a.nodeType || m.isWindow(a)) return !1;
			try {
				if (a.constructor && !j.call(a, "constructor") && !j.call(a.constructor.prototype, "isPrototypeOf")) return !1
			} catch (c) {
				return !1
			}
			if (k.ownLast)
				for (b in a) return j.call(a, b);
			for (b in a);
			return void 0 === b || j.call(a, b)
		},
		type: function(a) {
			return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? h[i.call(a)] || "object" : typeof a
		},
		globalEval: function(b) {
			b && m.trim(b) && (a.execScript || function(b) {
				a.eval.call(a, b)
			})(b)
		},
		camelCase: function(a) {
			return a.replace(o, "ms-").replace(p, q)
		},
		nodeName: function(a, b) {
			return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase()
		},
		each: function(a, b, c) {
			var d, e = 0,
				f = a.length,
				g = r(a);
			if (c) {
				if (g) {
					for (; f > e; e++)
						if (d = b.apply(a[e], c), d === !1) break
				} else
					for (e in a)
						if (d = b.apply(a[e], c), d === !1) break
			} else if (g) {
				for (; f > e; e++)
					if (d = b.call(a[e], e, a[e]), d === !1) break
			} else
				for (e in a)
					if (d = b.call(a[e], e, a[e]), d === !1) break;
			return a
		},
		trim: function(a) {
			return null == a ? "" : (a + "").replace(n, "")
		},
		makeArray: function(a, b) {
			var c = b || [];
			return null != a && (r(Object(a)) ? m.merge(c, "string" == typeof a ? [a] : a) : f.call(c, a)), c
		},
		inArray: function(a, b, c) {
			var d;
			if (b) {
				if (g) return g.call(b, a, c);
				for (d = b.length, c = c ? 0 > c ? Math.max(0, d + c) : c : 0; d > c; c++)
					if (c in b && b[c] === a) return c
			}
			return -1
		},
		merge: function(a, b) {
			var c = +b.length,
				d = 0,
				e = a.length;
			while (c > d) a[e++] = b[d++];
			if (c !== c)
				while (void 0 !== b[d]) a[e++] = b[d++];
			return a.length = e, a
		},
		grep: function(a, b, c) {
			for (var d, e = [], f = 0, g = a.length, h = !c; g > f; f++) d = !b(a[f], f), d !== h && e.push(a[f]);
			return e
		},
		map: function(a, b, c) {
			var d, f = 0,
				g = a.length,
				h = r(a),
				i = [];
			if (h)
				for (; g > f; f++) d = b(a[f], f, c), null != d && i.push(d);
			else
				for (f in a) d = b(a[f], f, c), null != d && i.push(d);
			return e.apply([], i)
		},
		guid: 1,
		proxy: function(a, b) {
			var c, e, f;
			return "string" == typeof b && (f = a[b], b = a, a = f), m.isFunction(a) ? (c = d.call(arguments, 2), e =
				function() {
					return a.apply(b || this, c.concat(d.call(arguments)))
				}, e.guid = a.guid = a.guid || m.guid++, e) : void 0
		},
		now: function() {
			return +new Date
		},
		support: k
	}), m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(a, b) {
		h["[object " + b + "]"] = b.toLowerCase()
	});

	function r(a) {
		var b = "length" in a && a.length,
			c = m.type(a);
		return "function" === c || m.isWindow(a) ? !1 : 1 === a.nodeType && b ? !0 : "array" === c || 0 === b || "number" ==
			typeof b && b > 0 && b - 1 in a
	}
	var s = function(a) {
		var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u = "sizzle" + 1 * new Date,
			v = a.document,
			w = 0,
			x = 0,
			y = ha(),
			z = ha(),
			A = ha(),
			B = function(a, b) {
				return a === b && (l = !0), 0
			},
			C = 1 << 31,
			D = {}.hasOwnProperty,
			E = [],
			F = E.pop,
			G = E.push,
			H = E.push,
			I = E.slice,
			J = function(a, b) {
				for (var c = 0, d = a.length; d > c; c++)
					if (a[c] === b) return c;
				return -1
			},
			K =
			"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
			L = "[\\x20\\t\\r\\n\\f]",
			M = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
			N = M.replace("w", "w#"),
			O = "\\[" + L + "*(" + M + ")(?:" + L + "*([*^$|!~]?=)" + L +
			"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + N + "))|)" + L + "*\\]",
			P = ":(" + M + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + O +
			")*)|.*)\\)|)",
			Q = new RegExp(L + "+", "g"),
			R = new RegExp("^" + L + "+|((?:^|[^\\\\])(?:\\\\.)*)" + L + "+$", "g"),
			S = new RegExp("^" + L + "*," + L + "*"),
			T = new RegExp("^" + L + "*([>+~]|" + L + ")" + L + "*"),
			U = new RegExp("=" + L + "*([^\\]'\"]*?)" + L + "*\\]", "g"),
			V = new RegExp(P),
			W = new RegExp("^" + N + "$"),
			X = {
				ID: new RegExp("^#(" + M + ")"),
				CLASS: new RegExp("^\\.(" + M + ")"),
				TAG: new RegExp("^(" + M.replace("w", "w*") + ")"),
				ATTR: new RegExp("^" + O),
				PSEUDO: new RegExp("^" + P),
				CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + L + "*(even|odd|(([+-]|)(\\d*)n|)" +
					L + "*(?:([+-]|)" + L + "*(\\d+)|))" + L + "*\\)|)", "i"),
				bool: new RegExp("^(?:" + K + ")$", "i"),
				needsContext: new RegExp("^" + L + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + L + "*((?:-\\d)?\\d*)" +
					L + "*\\)|)(?=[^-]|$)", "i")
			},
			Y = /^(?:input|select|textarea|button)$/i,
			Z = /^h\d$/i,
			$ = /^[^{]+\{\s*\[native \w/,
			_ = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
			aa = /[+~]/,
			ba = /'|\\/g,
			ca = new RegExp("\\\\([\\da-f]{1,6}" + L + "?|(" + L + ")|.)", "ig"),
			da = function(a, b, c) {
				var d = "0x" + b - 65536;
				return d !== d || c ? b : 0 > d ? String.fromCharCode(d + 65536) : String.fromCharCode(d >> 10 | 55296, 1023 & d |
					56320)
			},
			ea = function() {
				m()
			};
		try {
			H.apply(E = I.call(v.childNodes), v.childNodes), E[v.childNodes.length].nodeType
		} catch (fa) {
			H = {
				apply: E.length ? function(a, b) {
					G.apply(a, I.call(b))
				} : function(a, b) {
					var c = a.length,
						d = 0;
					while (a[c++] = b[d++]);
					a.length = c - 1
				}
			}
		}

		function ga(a, b, d, e) {
			var f, h, j, k, l, o, r, s, w, x;
			if ((b ? b.ownerDocument || b : v) !== n && m(b), b = b || n, d = d || [], k = b.nodeType, "string" != typeof a ||
				!a || 1 !== k && 9 !== k && 11 !== k) return d;
			if (!e && p) {
				if (11 !== k && (f = _.exec(a)))
					if (j = f[1]) {
						if (9 === k) {
							if (h = b.getElementById(j), !h || !h.parentNode) return d;
							if (h.id === j) return d.push(h), d
						} else if (b.ownerDocument && (h = b.ownerDocument.getElementById(j)) && t(b, h) && h.id === j) return d.push(h),
							d
					} else {
						if (f[2]) return H.apply(d, b.getElementsByTagName(a)), d;
						if ((j = f[3]) && c.getElementsByClassName) return H.apply(d, b.getElementsByClassName(j)), d
					} if (c.qsa && (!q || !q.test(a))) {
					if (s = r = u, w = b, x = 1 !== k && a, 1 === k && "object" !== b.nodeName.toLowerCase()) {
						o = g(a), (r = b.getAttribute("id")) ? s = r.replace(ba, "\\$&") : b.setAttribute("id", s), s = "[id='" + s +
							"'] ", l = o.length;
						while (l--) o[l] = s + ra(o[l]);
						w = aa.test(a) && pa(b.parentNode) || b, x = o.join(",")
					}
					if (x) try {
						return H.apply(d, w.querySelectorAll(x)), d
					} catch (y) {} finally {
						r || b.removeAttribute("id")
					}
				}
			}
			return i(a.replace(R, "$1"), b, d, e)
		}

		function ha() {
			var a = [];

			function b(c, e) {
				return a.push(c + " ") > d.cacheLength && delete b[a.shift()], b[c + " "] = e
			}
			return b
		}

		function ia(a) {
			return a[u] = !0, a
		}

		function ja(a) {
			var b = n.createElement("div");
			try {
				return !!a(b)
			} catch (c) {
				return !1
			} finally {
				b.parentNode && b.parentNode.removeChild(b), b = null
			}
		}

		function ka(a, b) {
			var c = a.split("|"),
				e = a.length;
			while (e--) d.attrHandle[c[e]] = b
		}

		function la(a, b) {
			var c = b && a,
				d = c && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || C) - (~a.sourceIndex || C);
			if (d) return d;
			if (c)
				while (c = c.nextSibling)
					if (c === b) return -1;
			return a ? 1 : -1
		}

		function ma(a) {
			return function(b) {
				var c = b.nodeName.toLowerCase();
				return "input" === c && b.type === a
			}
		}

		function na(a) {
			return function(b) {
				var c = b.nodeName.toLowerCase();
				return ("input" === c || "button" === c) && b.type === a
			}
		}

		function oa(a) {
			return ia(function(b) {
				return b = +b, ia(function(c, d) {
					var e, f = a([], c.length, b),
						g = f.length;
					while (g--) c[e = f[g]] && (c[e] = !(d[e] = c[e]))
				})
			})
		}

		function pa(a) {
			return a && "undefined" != typeof a.getElementsByTagName && a
		}
		c = ga.support = {}, f = ga.isXML = function(a) {
			var b = a && (a.ownerDocument || a).documentElement;
			return b ? "HTML" !== b.nodeName : !1
		}, m = ga.setDocument = function(a) {
			var b, e, g = a ? a.ownerDocument || a : v;
			return g !== n && 9 === g.nodeType && g.documentElement ? (n = g, o = g.documentElement, e = g.defaultView, e &&
				e !== e.top && (e.addEventListener ? e.addEventListener("unload", ea, !1) : e.attachEvent && e.attachEvent(
					"onunload", ea)), p = !f(g), c.attributes = ja(function(a) {
					return a.className = "i", !a.getAttribute("className")
				}), c.getElementsByTagName = ja(function(a) {
					return a.appendChild(g.createComment("")), !a.getElementsByTagName("*").length
				}), c.getElementsByClassName = $.test(g.getElementsByClassName), c.getById = ja(function(a) {
					return o.appendChild(a).id = u, !g.getElementsByName || !g.getElementsByName(u).length
				}), c.getById ? (d.find.ID = function(a, b) {
					if ("undefined" != typeof b.getElementById && p) {
						var c = b.getElementById(a);
						return c && c.parentNode ? [c] : []
					}
				}, d.filter.ID = function(a) {
					var b = a.replace(ca, da);
					return function(a) {
						return a.getAttribute("id") === b
					}
				}) : (delete d.find.ID, d.filter.ID = function(a) {
					var b = a.replace(ca, da);
					return function(a) {
						var c = "undefined" != typeof a.getAttributeNode && a.getAttributeNode("id");
						return c && c.value === b
					}
				}), d.find.TAG = c.getElementsByTagName ? function(a, b) {
					return "undefined" != typeof b.getElementsByTagName ? b.getElementsByTagName(a) : c.qsa ? b.querySelectorAll(a) :
						void 0
				} : function(a, b) {
					var c, d = [],
						e = 0,
						f = b.getElementsByTagName(a);
					if ("*" === a) {
						while (c = f[e++]) 1 === c.nodeType && d.push(c);
						return d
					}
					return f
				}, d.find.CLASS = c.getElementsByClassName && function(a, b) {
					return p ? b.getElementsByClassName(a) : void 0
				}, r = [], q = [], (c.qsa = $.test(g.querySelectorAll)) && (ja(function(a) {
					o.appendChild(a).innerHTML = "<a id='" + u + "'></a><select id='" + u +
						"-\f]' msallowcapture=''><option selected=''></option></select>", a.querySelectorAll("[msallowcapture^='']")
						.length && q.push("[*^$]=" + L + "*(?:''|\"\")"), a.querySelectorAll("[selected]").length || q.push("\\[" +
							L + "*(?:value|" + K + ")"), a.querySelectorAll("[id~=" + u + "-]").length || q.push("~="), a.querySelectorAll(
							":checked").length || q.push(":checked"), a.querySelectorAll("a#" + u + "+*").length || q.push(".#.+[+~]")
				}), ja(function(a) {
					var b = g.createElement("input");
					b.setAttribute("type", "hidden"), a.appendChild(b).setAttribute("name", "D"), a.querySelectorAll("[name=d]")
						.length && q.push("name" + L + "*[*^$|!~]?="), a.querySelectorAll(":enabled").length || q.push(":enabled",
							":disabled"), a.querySelectorAll("*,:x"), q.push(",.*:")
				})), (c.matchesSelector = $.test(s = o.matches || o.webkitMatchesSelector || o.mozMatchesSelector || o.oMatchesSelector ||
					o.msMatchesSelector)) && ja(function(a) {
					c.disconnectedMatch = s.call(a, "div"), s.call(a, "[s!='']:x"), r.push("!=", P)
				}), q = q.length && new RegExp(q.join("|")), r = r.length && new RegExp(r.join("|")), b = $.test(o.compareDocumentPosition),
				t = b || $.test(o.contains) ? function(a, b) {
					var c = 9 === a.nodeType ? a.documentElement : a,
						d = b && b.parentNode;
					return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 &
						a.compareDocumentPosition(d)))
				} : function(a, b) {
					if (b)
						while (b = b.parentNode)
							if (b === a) return !0;
					return !1
				}, B = b ? function(a, b) {
					if (a === b) return l = !0, 0;
					var d = !a.compareDocumentPosition - !b.compareDocumentPosition;
					return d ? d : (d = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 &
						d || !c.sortDetached && b.compareDocumentPosition(a) === d ? a === g || a.ownerDocument === v && t(v, a) ? -
						1 : b === g || b.ownerDocument === v && t(v, b) ? 1 : k ? J(k, a) - J(k, b) : 0 : 4 & d ? -1 : 1)
				} : function(a, b) {
					if (a === b) return l = !0, 0;
					var c, d = 0,
						e = a.parentNode,
						f = b.parentNode,
						h = [a],
						i = [b];
					if (!e || !f) return a === g ? -1 : b === g ? 1 : e ? -1 : f ? 1 : k ? J(k, a) - J(k, b) : 0;
					if (e === f) return la(a, b);
					c = a;
					while (c = c.parentNode) h.unshift(c);
					c = b;
					while (c = c.parentNode) i.unshift(c);
					while (h[d] === i[d]) d++;
					return d ? la(h[d], i[d]) : h[d] === v ? -1 : i[d] === v ? 1 : 0
				}, g) : n
		}, ga.matches = function(a, b) {
			return ga(a, null, null, b)
		}, ga.matchesSelector = function(a, b) {
			if ((a.ownerDocument || a) !== n && m(a), b = b.replace(U, "='$1']"), !(!c.matchesSelector || !p || r && r.test(b) ||
					q && q.test(b))) try {
				var d = s.call(a, b);
				if (d || c.disconnectedMatch || a.document && 11 !== a.document.nodeType) return d
			} catch (e) {}
			return ga(b, n, null, [a]).length > 0
		}, ga.contains = function(a, b) {
			return (a.ownerDocument || a) !== n && m(a), t(a, b)
		}, ga.attr = function(a, b) {
			(a.ownerDocument || a) !== n && m(a);
			var e = d.attrHandle[b.toLowerCase()],
				f = e && D.call(d.attrHandle, b.toLowerCase()) ? e(a, b, !p) : void 0;
			return void 0 !== f ? f : c.attributes || !p ? a.getAttribute(b) : (f = a.getAttributeNode(b)) && f.specified ? f
				.value : null
		}, ga.error = function(a) {
			throw new Error("Syntax error, unrecognized expression: " + a)
		}, ga.uniqueSort = function(a) {
			var b, d = [],
				e = 0,
				f = 0;
			if (l = !c.detectDuplicates, k = !c.sortStable && a.slice(0), a.sort(B), l) {
				while (b = a[f++]) b === a[f] && (e = d.push(f));
				while (e--) a.splice(d[e], 1)
			}
			return k = null, a
		}, e = ga.getText = function(a) {
			var b, c = "",
				d = 0,
				f = a.nodeType;
			if (f) {
				if (1 === f || 9 === f || 11 === f) {
					if ("string" == typeof a.textContent) return a.textContent;
					for (a = a.firstChild; a; a = a.nextSibling) c += e(a)
				} else if (3 === f || 4 === f) return a.nodeValue
			} else
				while (b = a[d++]) c += e(b);
			return c
		}, d = ga.selectors = {
			cacheLength: 50,
			createPseudo: ia,
			match: X,
			attrHandle: {},
			find: {},
			relative: {
				">": {
					dir: "parentNode",
					first: !0
				},
				" ": {
					dir: "parentNode"
				},
				"+": {
					dir: "previousSibling",
					first: !0
				},
				"~": {
					dir: "previousSibling"
				}
			},
			preFilter: {
				ATTR: function(a) {
					return a[1] = a[1].replace(ca, da), a[3] = (a[3] || a[4] || a[5] || "").replace(ca, da), "~=" === a[2] && (a[3] =
						" " + a[3] + " "), a.slice(0, 4)
				},
				CHILD: function(a) {
					return a[1] = a[1].toLowerCase(), "nth" === a[1].slice(0, 3) ? (a[3] || ga.error(a[0]), a[4] = +(a[4] ? a[5] +
							(a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] &&
						ga.error(a[0]), a
				},
				PSEUDO: function(a) {
					var b, c = !a[6] && a[2];
					return X.CHILD.test(a[0]) ? null : (a[3] ? a[2] = a[4] || a[5] || "" : c && V.test(c) && (b = g(c, !0)) && (b =
						c.indexOf(")", c.length - b) - c.length) && (a[0] = a[0].slice(0, b), a[2] = c.slice(0, b)), a.slice(0, 3))
				}
			},
			filter: {
				TAG: function(a) {
					var b = a.replace(ca, da).toLowerCase();
					return "*" === a ? function() {
						return !0
					} : function(a) {
						return a.nodeName && a.nodeName.toLowerCase() === b
					}
				},
				CLASS: function(a) {
					var b = y[a + " "];
					return b || (b = new RegExp("(^|" + L + ")" + a + "(" + L + "|$)")) && y(a, function(a) {
						return b.test("string" == typeof a.className && a.className || "undefined" != typeof a.getAttribute && a.getAttribute(
							"class") || "")
					})
				},
				ATTR: function(a, b, c) {
					return function(d) {
						var e = ga.attr(d, a);
						return null == e ? "!=" === b : b ? (e += "", "=" === b ? e === c : "!=" === b ? e !== c : "^=" === b ? c &&
							0 === e.indexOf(c) : "*=" === b ? c && e.indexOf(c) > -1 : "$=" === b ? c && e.slice(-c.length) === c :
							"~=" === b ? (" " + e.replace(Q, " ") + " ").indexOf(c) > -1 : "|=" === b ? e === c || e.slice(0, c.length +
								1) === c + "-" : !1) : !0
					}
				},
				CHILD: function(a, b, c, d, e) {
					var f = "nth" !== a.slice(0, 3),
						g = "last" !== a.slice(-4),
						h = "of-type" === b;
					return 1 === d && 0 === e ? function(a) {
						return !!a.parentNode
					} : function(b, c, i) {
						var j, k, l, m, n, o, p = f !== g ? "nextSibling" : "previousSibling",
							q = b.parentNode,
							r = h && b.nodeName.toLowerCase(),
							s = !i && !h;
						if (q) {
							if (f) {
								while (p) {
									l = b;
									while (l = l[p])
										if (h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) return !1;
									o = p = "only" === a && !o && "nextSibling"
								}
								return !0
							}
							if (o = [g ? q.firstChild : q.lastChild], g && s) {
								k = q[u] || (q[u] = {}), j = k[a] || [], n = j[0] === w && j[1], m = j[0] === w && j[2], l = n && q.childNodes[
									n];
								while (l = ++n && l && l[p] || (m = n = 0) || o.pop())
									if (1 === l.nodeType && ++m && l === b) {
										k[a] = [w, n, m];
										break
									}
							} else if (s && (j = (b[u] || (b[u] = {}))[a]) && j[0] === w) m = j[1];
							else
								while (l = ++n && l && l[p] || (m = n = 0) || o.pop())
									if ((h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) && ++m && (s && ((l[u] || (l[u] = {}))[a] = [
											w, m
										]), l === b)) break;
							return m -= e, m === d || m % d === 0 && m / d >= 0
						}
					}
				},
				PSEUDO: function(a, b) {
					var c, e = d.pseudos[a] || d.setFilters[a.toLowerCase()] || ga.error("unsupported pseudo: " + a);
					return e[u] ? e(b) : e.length > 1 ? (c = [a, a, "", b], d.setFilters.hasOwnProperty(a.toLowerCase()) ? ia(
						function(a, c) {
							var d, f = e(a, b),
								g = f.length;
							while (g--) d = J(a, f[g]), a[d] = !(c[d] = f[g])
						}) : function(a) {
						return e(a, 0, c)
					}) : e
				}
			},
			pseudos: {
				not: ia(function(a) {
					var b = [],
						c = [],
						d = h(a.replace(R, "$1"));
					return d[u] ? ia(function(a, b, c, e) {
						var f, g = d(a, null, e, []),
							h = a.length;
						while (h--)(f = g[h]) && (a[h] = !(b[h] = f))
					}) : function(a, e, f) {
						return b[0] = a, d(b, null, f, c), b[0] = null, !c.pop()
					}
				}),
				has: ia(function(a) {
					return function(b) {
						return ga(a, b).length > 0
					}
				}),
				contains: ia(function(a) {
					return a = a.replace(ca, da),
						function(b) {
							return (b.textContent || b.innerText || e(b)).indexOf(a) > -1
						}
				}),
				lang: ia(function(a) {
					return W.test(a || "") || ga.error("unsupported lang: " + a), a = a.replace(ca, da).toLowerCase(),
						function(b) {
							var c;
							do
								if (c = p ? b.lang : b.getAttribute("xml:lang") || b.getAttribute("lang")) return c = c.toLowerCase(), c ===
									a || 0 === c.indexOf(a + "-"); while ((b = b.parentNode) && 1 === b.nodeType);
							return !1
						}
				}),
				target: function(b) {
					var c = a.location && a.location.hash;
					return c && c.slice(1) === b.id
				},
				root: function(a) {
					return a === o
				},
				focus: function(a) {
					return a === n.activeElement && (!n.hasFocus || n.hasFocus()) && !!(a.type || a.href || ~a.tabIndex)
				},
				enabled: function(a) {
					return a.disabled === !1
				},
				disabled: function(a) {
					return a.disabled === !0
				},
				checked: function(a) {
					var b = a.nodeName.toLowerCase();
					return "input" === b && !!a.checked || "option" === b && !!a.selected
				},
				selected: function(a) {
					return a.parentNode && a.parentNode.selectedIndex, a.selected === !0
				},
				empty: function(a) {
					for (a = a.firstChild; a; a = a.nextSibling)
						if (a.nodeType < 6) return !1;
					return !0
				},
				parent: function(a) {
					return !d.pseudos.empty(a)
				},
				header: function(a) {
					return Z.test(a.nodeName)
				},
				input: function(a) {
					return Y.test(a.nodeName)
				},
				button: function(a) {
					var b = a.nodeName.toLowerCase();
					return "input" === b && "button" === a.type || "button" === b
				},
				text: function(a) {
					var b;
					return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (b = a.getAttribute("type")) ||
						"text" === b.toLowerCase())
				},
				first: oa(function() {
					return [0]
				}),
				last: oa(function(a, b) {
					return [b - 1]
				}),
				eq: oa(function(a, b, c) {
					return [0 > c ? c + b : c]
				}),
				even: oa(function(a, b) {
					for (var c = 0; b > c; c += 2) a.push(c);
					return a
				}),
				odd: oa(function(a, b) {
					for (var c = 1; b > c; c += 2) a.push(c);
					return a
				}),
				lt: oa(function(a, b, c) {
					for (var d = 0 > c ? c + b : c; --d >= 0;) a.push(d);
					return a
				}),
				gt: oa(function(a, b, c) {
					for (var d = 0 > c ? c + b : c; ++d < b;) a.push(d);
					return a
				})
			}
		}, d.pseudos.nth = d.pseudos.eq;
		for (b in {
				radio: !0,
				checkbox: !0,
				file: !0,
				password: !0,
				image: !0
			}) d.pseudos[b] = ma(b);
		for (b in {
				submit: !0,
				reset: !0
			}) d.pseudos[b] = na(b);

		function qa() {}
		qa.prototype = d.filters = d.pseudos, d.setFilters = new qa, g = ga.tokenize = function(a, b) {
			var c, e, f, g, h, i, j, k = z[a + " "];
			if (k) return b ? 0 : k.slice(0);
			h = a, i = [], j = d.preFilter;
			while (h) {
				(!c || (e = S.exec(h))) && (e && (h = h.slice(e[0].length) || h), i.push(f = [])), c = !1, (e = T.exec(h)) && (c =
					e.shift(), f.push({
						value: c,
						type: e[0].replace(R, " ")
					}), h = h.slice(c.length));
				for (g in d.filter) !(e = X[g].exec(h)) || j[g] && !(e = j[g](e)) || (c = e.shift(), f.push({
					value: c,
					type: g,
					matches: e
				}), h = h.slice(c.length));
				if (!c) break
			}
			return b ? h.length : h ? ga.error(a) : z(a, i).slice(0)
		};

		function ra(a) {
			for (var b = 0, c = a.length, d = ""; c > b; b++) d += a[b].value;
			return d
		}

		function sa(a, b, c) {
			var d = b.dir,
				e = c && "parentNode" === d,
				f = x++;
			return b.first ? function(b, c, f) {
				while (b = b[d])
					if (1 === b.nodeType || e) return a(b, c, f)
			} : function(b, c, g) {
				var h, i, j = [w, f];
				if (g) {
					while (b = b[d])
						if ((1 === b.nodeType || e) && a(b, c, g)) return !0
				} else
					while (b = b[d])
						if (1 === b.nodeType || e) {
							if (i = b[u] || (b[u] = {}), (h = i[d]) && h[0] === w && h[1] === f) return j[2] = h[2];
							if (i[d] = j, j[2] = a(b, c, g)) return !0
						}
			}
		}

		function ta(a) {
			return a.length > 1 ? function(b, c, d) {
				var e = a.length;
				while (e--)
					if (!a[e](b, c, d)) return !1;
				return !0
			} : a[0]
		}

		function ua(a, b, c) {
			for (var d = 0, e = b.length; e > d; d++) ga(a, b[d], c);
			return c
		}

		function va(a, b, c, d, e) {
			for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++)(f = a[h]) && (!c || c(f, d, e)) && (g.push(f),
				j && b.push(h));
			return g
		}

		function wa(a, b, c, d, e, f) {
			return d && !d[u] && (d = wa(d)), e && !e[u] && (e = wa(e, f)), ia(function(f, g, h, i) {
				var j, k, l, m = [],
					n = [],
					o = g.length,
					p = f || ua(b || "*", h.nodeType ? [h] : h, []),
					q = !a || !f && b ? p : va(p, m, a, h, i),
					r = c ? e || (f ? a : o || d) ? [] : g : q;
				if (c && c(q, r, h, i), d) {
					j = va(r, n), d(j, [], h, i), k = j.length;
					while (k--)(l = j[k]) && (r[n[k]] = !(q[n[k]] = l))
				}
				if (f) {
					if (e || a) {
						if (e) {
							j = [], k = r.length;
							while (k--)(l = r[k]) && j.push(q[k] = l);
							e(null, r = [], j, i)
						}
						k = r.length;
						while (k--)(l = r[k]) && (j = e ? J(f, l) : m[k]) > -1 && (f[j] = !(g[j] = l))
					}
				} else r = va(r === g ? r.splice(o, r.length) : r), e ? e(null, g, r, i) : H.apply(g, r)
			})
		}

		function xa(a) {
			for (var b, c, e, f = a.length, g = d.relative[a[0].type], h = g || d.relative[" "], i = g ? 1 : 0, k = sa(
					function(a) {
						return a === b
					}, h, !0), l = sa(function(a) {
					return J(b, a) > -1
				}, h, !0), m = [function(a, c, d) {
					var e = !g && (d || c !== j) || ((b = c).nodeType ? k(a, c, d) : l(a, c, d));
					return b = null, e
				}]; f > i; i++)
				if (c = d.relative[a[i].type]) m = [sa(ta(m), c)];
				else {
					if (c = d.filter[a[i].type].apply(null, a[i].matches), c[u]) {
						for (e = ++i; f > e; e++)
							if (d.relative[a[e].type]) break;
						return wa(i > 1 && ta(m), i > 1 && ra(a.slice(0, i - 1).concat({
							value: " " === a[i - 2].type ? "*" : ""
						})).replace(R, "$1"), c, e > i && xa(a.slice(i, e)), f > e && xa(a = a.slice(e)), f > e && ra(a))
					}
					m.push(c)
				} return ta(m)
		}

		function ya(a, b) {
			var c = b.length > 0,
				e = a.length > 0,
				f = function(f, g, h, i, k) {
					var l, m, o, p = 0,
						q = "0",
						r = f && [],
						s = [],
						t = j,
						u = f || e && d.find.TAG("*", k),
						v = w += null == t ? 1 : Math.random() || .1,
						x = u.length;
					for (k && (j = g !== n && g); q !== x && null != (l = u[q]); q++) {
						if (e && l) {
							m = 0;
							while (o = a[m++])
								if (o(l, g, h)) {
									i.push(l);
									break
								} k && (w = v)
						}
						c && ((l = !o && l) && p--, f && r.push(l))
					}
					if (p += q, c && q !== p) {
						m = 0;
						while (o = b[m++]) o(r, s, g, h);
						if (f) {
							if (p > 0)
								while (q--) r[q] || s[q] || (s[q] = F.call(i));
							s = va(s)
						}
						H.apply(i, s), k && !f && s.length > 0 && p + b.length > 1 && ga.uniqueSort(i)
					}
					return k && (w = v, j = t), r
				};
			return c ? ia(f) : f
		}
		return h = ga.compile = function(a, b) {
			var c, d = [],
				e = [],
				f = A[a + " "];
			if (!f) {
				b || (b = g(a)), c = b.length;
				while (c--) f = xa(b[c]), f[u] ? d.push(f) : e.push(f);
				f = A(a, ya(e, d)), f.selector = a
			}
			return f
		}, i = ga.select = function(a, b, e, f) {
			var i, j, k, l, m, n = "function" == typeof a && a,
				o = !f && g(a = n.selector || a);
			if (e = e || [], 1 === o.length) {
				if (j = o[0] = o[0].slice(0), j.length > 2 && "ID" === (k = j[0]).type && c.getById && 9 === b.nodeType && p &&
					d.relative[j[1].type]) {
					if (b = (d.find.ID(k.matches[0].replace(ca, da), b) || [])[0], !b) return e;
					n && (b = b.parentNode), a = a.slice(j.shift().value.length)
				}
				i = X.needsContext.test(a) ? 0 : j.length;
				while (i--) {
					if (k = j[i], d.relative[l = k.type]) break;
					if ((m = d.find[l]) && (f = m(k.matches[0].replace(ca, da), aa.test(j[0].type) && pa(b.parentNode) || b))) {
						if (j.splice(i, 1), a = f.length && ra(j), !a) return H.apply(e, f), e;
						break
					}
				}
			}
			return (n || h(a, o))(f, b, !p, e, aa.test(a) && pa(b.parentNode) || b), e
		}, c.sortStable = u.split("").sort(B).join("") === u, c.detectDuplicates = !!l, m(), c.sortDetached = ja(function(
			a) {
			return 1 & a.compareDocumentPosition(n.createElement("div"))
		}), ja(function(a) {
			return a.innerHTML = "<a href='#'></a>", "#" === a.firstChild.getAttribute("href")
		}) || ka("type|href|height|width", function(a, b, c) {
			return c ? void 0 : a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2)
		}), c.attributes && ja(function(a) {
			return a.innerHTML = "<input/>", a.firstChild.setAttribute("value", ""), "" === a.firstChild.getAttribute(
				"value")
		}) || ka("value", function(a, b, c) {
			return c || "input" !== a.nodeName.toLowerCase() ? void 0 : a.defaultValue
		}), ja(function(a) {
			return null == a.getAttribute("disabled")
		}) || ka(K, function(a, b, c) {
			var d;
			return c ? void 0 : a[b] === !0 ? b.toLowerCase() : (d = a.getAttributeNode(b)) && d.specified ? d.value : null
		}), ga
	}(a);
	m.find = s, m.expr = s.selectors, m.expr[":"] = m.expr.pseudos, m.unique = s.uniqueSort, m.text = s.getText, m.isXMLDoc =
		s.isXML, m.contains = s.contains;
	var t = m.expr.match.needsContext,
		u = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
		v = /^.[^:#\[\.,]*$/;

	function w(a, b, c) {
		if (m.isFunction(b)) return m.grep(a, function(a, d) {
			return !!b.call(a, d, a) !== c
		});
		if (b.nodeType) return m.grep(a, function(a) {
			return a === b !== c
		});
		if ("string" == typeof b) {
			if (v.test(b)) return m.filter(b, a, c);
			b = m.filter(b, a)
		}
		return m.grep(a, function(a) {
			return m.inArray(a, b) >= 0 !== c
		})
	}
	m.filter = function(a, b, c) {
		var d = b[0];
		return c && (a = ":not(" + a + ")"), 1 === b.length && 1 === d.nodeType ? m.find.matchesSelector(d, a) ? [d] : [] :
			m.find.matches(a, m.grep(b, function(a) {
				return 1 === a.nodeType
			}))
	}, m.fn.extend({
		find: function(a) {
			var b, c = [],
				d = this,
				e = d.length;
			if ("string" != typeof a) return this.pushStack(m(a).filter(function() {
				for (b = 0; e > b; b++)
					if (m.contains(d[b], this)) return !0
			}));
			for (b = 0; e > b; b++) m.find(a, d[b], c);
			return c = this.pushStack(e > 1 ? m.unique(c) : c), c.selector = this.selector ? this.selector + " " + a : a, c
		},
		filter: function(a) {
			return this.pushStack(w(this, a || [], !1))
		},
		not: function(a) {
			return this.pushStack(w(this, a || [], !0))
		},
		is: function(a) {
			return !!w(this, "string" == typeof a && t.test(a) ? m(a) : a || [], !1).length
		}
	});
	var x, y = a.document,
		z = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
		A = m.fn.init = function(a, b) {
			var c, d;
			if (!a) return this;
			if ("string" == typeof a) {
				if (c = "<" === a.charAt(0) && ">" === a.charAt(a.length - 1) && a.length >= 3 ? [null, a, null] : z.exec(a), !c ||
					!c[1] && b) return !b || b.jquery ? (b || x).find(a) : this.constructor(b).find(a);
				if (c[1]) {
					if (b = b instanceof m ? b[0] : b, m.merge(this, m.parseHTML(c[1], b && b.nodeType ? b.ownerDocument || b : y, !0)),
						u.test(c[1]) && m.isPlainObject(b))
						for (c in b) m.isFunction(this[c]) ? this[c](b[c]) : this.attr(c, b[c]);
					return this
				}
				if (d = y.getElementById(c[2]), d && d.parentNode) {
					if (d.id !== c[2]) return x.find(a);
					this.length = 1, this[0] = d
				}
				return this.context = y, this.selector = a, this
			}
			return a.nodeType ? (this.context = this[0] = a, this.length = 1, this) : m.isFunction(a) ? "undefined" != typeof x
				.ready ? x.ready(a) : a(m) : (void 0 !== a.selector && (this.selector = a.selector, this.context = a.context), m.makeArray(
					a, this))
		};
	A.prototype = m.fn, x = m(y);
	var B = /^(?:parents|prev(?:Until|All))/,
		C = {
			children: !0,
			contents: !0,
			next: !0,
			prev: !0
		};
	m.extend({
		dir: function(a, b, c) {
			var d = [],
				e = a[b];
			while (e && 9 !== e.nodeType && (void 0 === c || 1 !== e.nodeType || !m(e).is(c))) 1 === e.nodeType && d.push(e),
				e = e[b];
			return d
		},
		sibling: function(a, b) {
			for (var c = []; a; a = a.nextSibling) 1 === a.nodeType && a !== b && c.push(a);
			return c
		}
	}), m.fn.extend({
		has: function(a) {
			var b, c = m(a, this),
				d = c.length;
			return this.filter(function() {
				for (b = 0; d > b; b++)
					if (m.contains(this, c[b])) return !0
			})
		},
		closest: function(a, b) {
			for (var c, d = 0, e = this.length, f = [], g = t.test(a) || "string" != typeof a ? m(a, b || this.context) : 0; e >
				d; d++)
				for (c = this[d]; c && c !== b; c = c.parentNode)
					if (c.nodeType < 11 && (g ? g.index(c) > -1 : 1 === c.nodeType && m.find.matchesSelector(c, a))) {
						f.push(c);
						break
					} return this.pushStack(f.length > 1 ? m.unique(f) : f)
		},
		index: function(a) {
			return a ? "string" == typeof a ? m.inArray(this[0], m(a)) : m.inArray(a.jquery ? a[0] : a, this) : this[0] &&
				this[0].parentNode ? this.first().prevAll().length : -1
		},
		add: function(a, b) {
			return this.pushStack(m.unique(m.merge(this.get(), m(a, b))))
		},
		addBack: function(a) {
			return this.add(null == a ? this.prevObject : this.prevObject.filter(a))
		}
	});

	function D(a, b) {
		do a = a[b]; while (a && 1 !== a.nodeType);
		return a
	}
	m.each({
		parent: function(a) {
			var b = a.parentNode;
			return b && 11 !== b.nodeType ? b : null
		},
		parents: function(a) {
			return m.dir(a, "parentNode")
		},
		parentsUntil: function(a, b, c) {
			return m.dir(a, "parentNode", c)
		},
		next: function(a) {
			return D(a, "nextSibling")
		},
		prev: function(a) {
			return D(a, "previousSibling")
		},
		nextAll: function(a) {
			return m.dir(a, "nextSibling")
		},
		prevAll: function(a) {
			return m.dir(a, "previousSibling")
		},
		nextUntil: function(a, b, c) {
			return m.dir(a, "nextSibling", c)
		},
		prevUntil: function(a, b, c) {
			return m.dir(a, "previousSibling", c)
		},
		siblings: function(a) {
			return m.sibling((a.parentNode || {}).firstChild, a)
		},
		children: function(a) {
			return m.sibling(a.firstChild)
		},
		contents: function(a) {
			return m.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document : m.merge([], a.childNodes)
		}
	}, function(a, b) {
		m.fn[a] = function(c, d) {
			var e = m.map(this, b, c);
			return "Until" !== a.slice(-5) && (d = c), d && "string" == typeof d && (e = m.filter(d, e)), this.length > 1 &&
				(C[a] || (e = m.unique(e)), B.test(a) && (e = e.reverse())), this.pushStack(e)
		}
	});
	var E = /\S+/g,
		F = {};

	function G(a) {
		var b = F[a] = {};
		return m.each(a.match(E) || [], function(a, c) {
			b[c] = !0
		}), b
	}
	m.Callbacks = function(a) {
		a = "string" == typeof a ? F[a] || G(a) : m.extend({}, a);
		var b, c, d, e, f, g, h = [],
			i = !a.once && [],
			j = function(l) {
				for (c = a.memory && l, d = !0, f = g || 0, g = 0, e = h.length, b = !0; h && e > f; f++)
					if (h[f].apply(l[0], l[1]) === !1 && a.stopOnFalse) {
						c = !1;
						break
					} b = !1, h && (i ? i.length && j(i.shift()) : c ? h = [] : k.disable())
			},
			k = {
				add: function() {
					if (h) {
						var d = h.length;
						! function f(b) {
							m.each(b, function(b, c) {
								var d = m.type(c);
								"function" === d ? a.unique && k.has(c) || h.push(c) : c && c.length && "string" !== d && f(c)
							})
						}(arguments), b ? e = h.length : c && (g = d, j(c))
					}
					return this
				},
				remove: function() {
					return h && m.each(arguments, function(a, c) {
						var d;
						while ((d = m.inArray(c, h, d)) > -1) h.splice(d, 1), b && (e >= d && e--, f >= d && f--)
					}), this
				},
				has: function(a) {
					return a ? m.inArray(a, h) > -1 : !(!h || !h.length)
				},
				empty: function() {
					return h = [], e = 0, this
				},
				disable: function() {
					return h = i = c = void 0, this
				},
				disabled: function() {
					return !h
				},
				lock: function() {
					return i = void 0, c || k.disable(), this
				},
				locked: function() {
					return !i
				},
				fireWith: function(a, c) {
					return !h || d && !i || (c = c || [], c = [a, c.slice ? c.slice() : c], b ? i.push(c) : j(c)), this
				},
				fire: function() {
					return k.fireWith(this, arguments), this
				},
				fired: function() {
					return !!d
				}
			};
		return k
	}, m.extend({
		Deferred: function(a) {
			var b = [
					["resolve", "done", m.Callbacks("once memory"), "resolved"],
					["reject", "fail", m.Callbacks("once memory"), "rejected"],
					["notify", "progress", m.Callbacks("memory")]
				],
				c = "pending",
				d = {
					state: function() {
						return c
					},
					always: function() {
						return e.done(arguments).fail(arguments), this
					},
					then: function() {
						var a = arguments;
						return m.Deferred(function(c) {
							m.each(b, function(b, f) {
								var g = m.isFunction(a[b]) && a[b];
								e[f[1]](function() {
									var a = g && g.apply(this, arguments);
									a && m.isFunction(a.promise) ? a.promise().done(c.resolve).fail(c.reject).progress(c.notify) : c[f[
										0] + "With"](this === d ? c.promise() : this, g ? [a] : arguments)
								})
							}), a = null
						}).promise()
					},
					promise: function(a) {
						return null != a ? m.extend(a, d) : d
					}
				},
				e = {};
			return d.pipe = d.then, m.each(b, function(a, f) {
				var g = f[2],
					h = f[3];
				d[f[1]] = g.add, h && g.add(function() {
					c = h
				}, b[1 ^ a][2].disable, b[2][2].lock), e[f[0]] = function() {
					return e[f[0] + "With"](this === e ? d : this, arguments), this
				}, e[f[0] + "With"] = g.fireWith
			}), d.promise(e), a && a.call(e, e), e
		},
		when: function(a) {
			var b = 0,
				c = d.call(arguments),
				e = c.length,
				f = 1 !== e || a && m.isFunction(a.promise) ? e : 0,
				g = 1 === f ? a : m.Deferred(),
				h = function(a, b, c) {
					return function(e) {
						b[a] = this, c[a] = arguments.length > 1 ? d.call(arguments) : e, c === i ? g.notifyWith(b, c) : --f || g.resolveWith(
							b, c)
					}
				},
				i, j, k;
			if (e > 1)
				for (i = new Array(e), j = new Array(e), k = new Array(e); e > b; b++) c[b] && m.isFunction(c[b].promise) ? c[b]
					.promise().done(h(b, k, c)).fail(g.reject).progress(h(b, j, i)) : --f;
			return f || g.resolveWith(k, c), g.promise()
		}
	});
	var H;
	m.fn.ready = function(a) {
		return m.ready.promise().done(a), this
	}, m.extend({
		isReady: !1,
		readyWait: 1,
		holdReady: function(a) {
			a ? m.readyWait++ : m.ready(!0)
		},
		ready: function(a) {
			if (a === !0 ? !--m.readyWait : !m.isReady) {
				if (!y.body) return setTimeout(m.ready);
				m.isReady = !0, a !== !0 && --m.readyWait > 0 || (H.resolveWith(y, [m]), m.fn.triggerHandler && (m(y).triggerHandler(
					"ready"), m(y).off("ready")))
			}
		}
	});

	function I() {
		y.addEventListener ? (y.removeEventListener("DOMContentLoaded", J, !1), a.removeEventListener("load", J, !1)) : (y.detachEvent(
			"onreadystatechange", J), a.detachEvent("onload", J))
	}

	function J() {
		(y.addEventListener || "load" === event.type || "complete" === y.readyState) && (I(), m.ready())
	}
	m.ready.promise = function(b) {
		if (!H)
			if (H = m.Deferred(), "complete" === y.readyState) setTimeout(m.ready);
			else if (y.addEventListener) y.addEventListener("DOMContentLoaded", J, !1), a.addEventListener("load", J, !1);
		else {
			y.attachEvent("onreadystatechange", J), a.attachEvent("onload", J);
			var c = !1;
			try {
				c = null == a.frameElement && y.documentElement
			} catch (d) {}
			c && c.doScroll && ! function e() {
				if (!m.isReady) {
					try {
						c.doScroll("left")
					} catch (a) {
						return setTimeout(e, 50)
					}
					I(), m.ready()
				}
			}()
		}
		return H.promise(b)
	};
	var K = "undefined",
		L;
	for (L in m(k)) break;
	k.ownLast = "0" !== L, k.inlineBlockNeedsLayout = !1, m(function() {
			var a, b, c, d;
			c = y.getElementsByTagName("body")[0], c && c.style && (b = y.createElement("div"), d = y.createElement("div"), d.style
				.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", c.appendChild(d).appendChild(b),
				typeof b.style.zoom !== K && (b.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",
					k.inlineBlockNeedsLayout = a = 3 === b.offsetWidth, a && (c.style.zoom = 1)), c.removeChild(d))
		}),
		function() {
			var a = y.createElement("div");
			if (null == k.deleteExpando) {
				k.deleteExpando = !0;
				try {
					delete a.test
				} catch (b) {
					k.deleteExpando = !1
				}
			}
			a = null
		}(), m.acceptData = function(a) {
			var b = m.noData[(a.nodeName + " ").toLowerCase()],
				c = +a.nodeType || 1;
			return 1 !== c && 9 !== c ? !1 : !b || b !== !0 && a.getAttribute("classid") === b
		};
	var M = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
		N = /([A-Z])/g;

	function O(a, b, c) {
		if (void 0 === c && 1 === a.nodeType) {
			var d = "data-" + b.replace(N, "-$1").toLowerCase();
			if (c = a.getAttribute(d), "string" == typeof c) {
				try {
					c = "true" === c ? !0 : "false" === c ? !1 : "null" === c ? null : +c + "" === c ? +c : M.test(c) ? m.parseJSON(c) :
						c
				} catch (e) {}
				m.data(a, b, c)
			} else c = void 0
		}
		return c
	}

	function P(a) {
		var b;
		for (b in a)
			if (("data" !== b || !m.isEmptyObject(a[b])) && "toJSON" !== b) return !1;

		return !0
	}

	function Q(a, b, d, e) {
		if (m.acceptData(a)) {
			var f, g, h = m.expando,
				i = a.nodeType,
				j = i ? m.cache : a,
				k = i ? a[h] : a[h] && h;
			if (k && j[k] && (e || j[k].data) || void 0 !== d || "string" != typeof b) return k || (k = i ? a[h] = c.pop() || m
					.guid++ : h), j[k] || (j[k] = i ? {} : {
					toJSON: m.noop
				}), ("object" == typeof b || "function" == typeof b) && (e ? j[k] = m.extend(j[k], b) : j[k].data = m.extend(j[k]
					.data, b)), g = j[k], e || (g.data || (g.data = {}), g = g.data), void 0 !== d && (g[m.camelCase(b)] = d),
				"string" == typeof b ? (f = g[b], null == f && (f = g[m.camelCase(b)])) : f = g, f
		}
	}

	function R(a, b, c) {
		if (m.acceptData(a)) {
			var d, e, f = a.nodeType,
				g = f ? m.cache : a,
				h = f ? a[m.expando] : m.expando;
			if (g[h]) {
				if (b && (d = c ? g[h] : g[h].data)) {
					m.isArray(b) ? b = b.concat(m.map(b, m.camelCase)) : b in d ? b = [b] : (b = m.camelCase(b), b = b in d ? [b] : b
						.split(" ")), e = b.length;
					while (e--) delete d[b[e]];
					if (c ? !P(d) : !m.isEmptyObject(d)) return
				}(c || (delete g[h].data, P(g[h]))) && (f ? m.cleanData([a], !0) : k.deleteExpando || g != g.window ? delete g[h] :
					g[h] = null)
			}
		}
	}
	m.extend({
		cache: {},
		noData: {
			"applet ": !0,
			"embed ": !0,
			"object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
		},
		hasData: function(a) {
			return a = a.nodeType ? m.cache[a[m.expando]] : a[m.expando], !!a && !P(a)
		},
		data: function(a, b, c) {
			return Q(a, b, c)
		},
		removeData: function(a, b) {
			return R(a, b)
		},
		_data: function(a, b, c) {
			return Q(a, b, c, !0)
		},
		_removeData: function(a, b) {
			return R(a, b, !0)
		}
	}), m.fn.extend({
		data: function(a, b) {
			var c, d, e, f = this[0],
				g = f && f.attributes;
			if (void 0 === a) {
				if (this.length && (e = m.data(f), 1 === f.nodeType && !m._data(f, "parsedAttrs"))) {
					c = g.length;
					while (c--) g[c] && (d = g[c].name, 0 === d.indexOf("data-") && (d = m.camelCase(d.slice(5)), O(f, d, e[d])));
					m._data(f, "parsedAttrs", !0)
				}
				return e
			}
			return "object" == typeof a ? this.each(function() {
				m.data(this, a)
			}) : arguments.length > 1 ? this.each(function() {
				m.data(this, a, b)
			}) : f ? O(f, a, m.data(f, a)) : void 0
		},
		removeData: function(a) {
			return this.each(function() {
				m.removeData(this, a)
			})
		}
	}), m.extend({
		queue: function(a, b, c) {
			var d;
			return a ? (b = (b || "fx") + "queue", d = m._data(a, b), c && (!d || m.isArray(c) ? d = m._data(a, b, m.makeArray(
				c)) : d.push(c)), d || []) : void 0
		},
		dequeue: function(a, b) {
			b = b || "fx";
			var c = m.queue(a, b),
				d = c.length,
				e = c.shift(),
				f = m._queueHooks(a, b),
				g = function() {
					m.dequeue(a, b)
				};
			"inprogress" === e && (e = c.shift(), d--), e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a,
				g, f)), !d && f && f.empty.fire()
		},
		_queueHooks: function(a, b) {
			var c = b + "queueHooks";
			return m._data(a, c) || m._data(a, c, {
				empty: m.Callbacks("once memory").add(function() {
					m._removeData(a, b + "queue"), m._removeData(a, c)
				})
			})
		}
	}), m.fn.extend({
		queue: function(a, b) {
			var c = 2;
			return "string" != typeof a && (b = a, a = "fx", c--), arguments.length < c ? m.queue(this[0], a) : void 0 ===
				b ? this : this.each(function() {
					var c = m.queue(this, a, b);
					m._queueHooks(this, a), "fx" === a && "inprogress" !== c[0] && m.dequeue(this, a)
				})
		},
		dequeue: function(a) {
			return this.each(function() {
				m.dequeue(this, a)
			})
		},
		clearQueue: function(a) {
			return this.queue(a || "fx", [])
		},
		promise: function(a, b) {
			var c, d = 1,
				e = m.Deferred(),
				f = this,
				g = this.length,
				h = function() {
					--d || e.resolveWith(f, [f])
				};
			"string" != typeof a && (b = a, a = void 0), a = a || "fx";
			while (g--) c = m._data(f[g], a + "queueHooks"), c && c.empty && (d++, c.empty.add(h));
			return h(), e.promise(b)
		}
	});
	var S = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
		T = ["Top", "Right", "Bottom", "Left"],
		U = function(a, b) {
			return a = b || a, "none" === m.css(a, "display") || !m.contains(a.ownerDocument, a)
		},
		V = m.access = function(a, b, c, d, e, f, g) {
			var h = 0,
				i = a.length,
				j = null == c;
			if ("object" === m.type(c)) {
				e = !0;
				for (h in c) m.access(a, b, h, c[h], !0, f, g)
			} else if (void 0 !== d && (e = !0, m.isFunction(d) || (g = !0), j && (g ? (b.call(a, d), b = null) : (j = b, b =
					function(a, b, c) {
						return j.call(m(a), c)
					})), b))
				for (; i > h; h++) b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c)));
			return e ? a : j ? b.call(a) : i ? b(a[0], c) : f
		},
		W = /^(?:checkbox|radio)$/i;
	! function() {
		var a = y.createElement("input"),
			b = y.createElement("div"),
			c = y.createDocumentFragment();
		if (b.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", k.leadingWhitespace = 3 ===
			b.firstChild.nodeType, k.tbody = !b.getElementsByTagName("tbody").length, k.htmlSerialize = !!b.getElementsByTagName(
				"link").length, k.html5Clone = "<:nav></:nav>" !== y.createElement("nav").cloneNode(!0).outerHTML, a.type =
			"checkbox", a.checked = !0, c.appendChild(a), k.appendChecked = a.checked, b.innerHTML = "<textarea>x</textarea>",
			k.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue, c.appendChild(b), b.innerHTML =
			"<input type='radio' checked='checked' name='t'/>", k.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked,
			k.noCloneEvent = !0, b.attachEvent && (b.attachEvent("onclick", function() {
				k.noCloneEvent = !1
			}), b.cloneNode(!0).click()), null == k.deleteExpando) {
			k.deleteExpando = !0;
			try {
				delete b.test
			} catch (d) {
				k.deleteExpando = !1
			}
		}
	}(),
	function() {
		var b, c, d = y.createElement("div");
		for (b in {
				submit: !0,
				change: !0,
				focusin: !0
			}) c = "on" + b, (k[b + "Bubbles"] = c in a) || (d.setAttribute(c, "t"), k[b + "Bubbles"] = d.attributes[c].expando ===
			!1);
		d = null
	}();
	var X = /^(?:input|select|textarea)$/i,
		Y = /^key/,
		Z = /^(?:mouse|pointer|contextmenu)|click/,
		$ = /^(?:focusinfocus|focusoutblur)$/,
		_ = /^([^.]*)(?:\.(.+)|)$/;

	function aa() {
		return !0
	}

	function ba() {
		return !1
	}

	function ca() {
		try {
			return y.activeElement
		} catch (a) {}
	}
	m.event = {
		global: {},
		add: function(a, b, c, d, e) {
			var f, g, h, i, j, k, l, n, o, p, q, r = m._data(a);
			if (r) {
				c.handler && (i = c, c = i.handler, e = i.selector), c.guid || (c.guid = m.guid++), (g = r.events) || (g = r.events = {}),
					(k = r.handle) || (k = r.handle = function(a) {
						return typeof m === K || a && m.event.triggered === a.type ? void 0 : m.event.dispatch.apply(k.elem,
							arguments)
					}, k.elem = a), b = (b || "").match(E) || [""], h = b.length;
				while (h--) f = _.exec(b[h]) || [], o = q = f[1], p = (f[2] || "").split(".").sort(), o && (j = m.event.special[
						o] || {}, o = (e ? j.delegateType : j.bindType) || o, j = m.event.special[o] || {}, l = m.extend({
						type: o,
						origType: q,
						data: d,
						handler: c,
						guid: c.guid,
						selector: e,
						needsContext: e && m.expr.match.needsContext.test(e),
						namespace: p.join(".")
					}, i), (n = g[o]) || (n = g[o] = [], n.delegateCount = 0, j.setup && j.setup.call(a, d, p, k) !== !1 || (a.addEventListener ?
						a.addEventListener(o, k, !1) : a.attachEvent && a.attachEvent("on" + o, k))), j.add && (j.add.call(a, l), l.handler
						.guid || (l.handler.guid = c.guid)), e ? n.splice(n.delegateCount++, 0, l) : n.push(l), m.event.global[o] = !
					0);
				a = null
			}
		},
		remove: function(a, b, c, d, e) {
			var f, g, h, i, j, k, l, n, o, p, q, r = m.hasData(a) && m._data(a);
			if (r && (k = r.events)) {
				b = (b || "").match(E) || [""], j = b.length;
				while (j--)
					if (h = _.exec(b[j]) || [], o = q = h[1], p = (h[2] || "").split(".").sort(), o) {
						l = m.event.special[o] || {}, o = (d ? l.delegateType : l.bindType) || o, n = k[o] || [], h = h[2] && new RegExp(
							"(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), i = f = n.length;
						while (f--) g = n[f], !e && q !== g.origType || c && c.guid !== g.guid || h && !h.test(g.namespace) || d && d !==
							g.selector && ("**" !== d || !g.selector) || (n.splice(f, 1), g.selector && n.delegateCount--, l.remove && l.remove
								.call(a, g));
						i && !n.length && (l.teardown && l.teardown.call(a, p, r.handle) !== !1 || m.removeEvent(a, o, r.handle),
							delete k[o])
					} else
						for (o in k) m.event.remove(a, o + b[j], c, d, !0);
				m.isEmptyObject(k) && (delete r.handle, m._removeData(a, "events"))
			}
		},
		trigger: function(b, c, d, e) {
			var f, g, h, i, k, l, n, o = [d || y],
				p = j.call(b, "type") ? b.type : b,
				q = j.call(b, "namespace") ? b.namespace.split(".") : [];
			if (h = l = d = d || y, 3 !== d.nodeType && 8 !== d.nodeType && !$.test(p + m.event.triggered) && (p.indexOf(".") >=
					0 && (q = p.split("."), p = q.shift(), q.sort()), g = p.indexOf(":") < 0 && "on" + p, b = b[m.expando] ? b :
					new m.Event(p, "object" == typeof b && b), b.isTrigger = e ? 2 : 3, b.namespace = q.join("."), b.namespace_re =
					b.namespace ? new RegExp("(^|\\.)" + q.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, b.result = void 0, b.target ||
					(b.target = d), c = null == c ? [b] : m.makeArray(c, [b]), k = m.event.special[p] || {}, e || !k.trigger || k.trigger
					.apply(d, c) !== !1)) {
				if (!e && !k.noBubble && !m.isWindow(d)) {
					for (i = k.delegateType || p, $.test(i + p) || (h = h.parentNode); h; h = h.parentNode) o.push(h), l = h;
					l === (d.ownerDocument || y) && o.push(l.defaultView || l.parentWindow || a)
				}
				n = 0;
				while ((h = o[n++]) && !b.isPropagationStopped()) b.type = n > 1 ? i : k.bindType || p, f = (m._data(h, "events") ||
					{})[b.type] && m._data(h, "handle"), f && f.apply(h, c), f = g && h[g], f && f.apply && m.acceptData(h) && (b.result =
					f.apply(h, c), b.result === !1 && b.preventDefault());
				if (b.type = p, !e && !b.isDefaultPrevented() && (!k._default || k._default.apply(o.pop(), c) === !1) && m.acceptData(
						d) && g && d[p] && !m.isWindow(d)) {
					l = d[g], l && (d[g] = null), m.event.triggered = p;
					try {
						d[p]()
					} catch (r) {}
					m.event.triggered = void 0, l && (d[g] = l)
				}
				return b.result
			}
		},
		dispatch: function(a) {
			a = m.event.fix(a);
			var b, c, e, f, g, h = [],
				i = d.call(arguments),
				j = (m._data(this, "events") || {})[a.type] || [],
				k = m.event.special[a.type] || {};
			if (i[0] = a, a.delegateTarget = this, !k.preDispatch || k.preDispatch.call(this, a) !== !1) {
				h = m.event.handlers.call(this, a, j), b = 0;
				while ((f = h[b++]) && !a.isPropagationStopped()) {
					a.currentTarget = f.elem, g = 0;
					while ((e = f.handlers[g++]) && !a.isImmediatePropagationStopped())(!a.namespace_re || a.namespace_re.test(e.namespace)) &&
						(a.handleObj = e, a.data = e.data, c = ((m.event.special[e.origType] || {}).handle || e.handler).apply(f.elem,
							i), void 0 !== c && (a.result = c) === !1 && (a.preventDefault(), a.stopPropagation()))
				}
				return k.postDispatch && k.postDispatch.call(this, a), a.result
			}
		},
		handlers: function(a, b) {
			var c, d, e, f, g = [],
				h = b.delegateCount,
				i = a.target;
			if (h && i.nodeType && (!a.button || "click" !== a.type))
				for (; i != this; i = i.parentNode || this)
					if (1 === i.nodeType && (i.disabled !== !0 || "click" !== a.type)) {
						for (e = [], f = 0; h > f; f++) d = b[f], c = d.selector + " ", void 0 === e[c] && (e[c] = d.needsContext ? m(
							c, this).index(i) >= 0 : m.find(c, this, null, [i]).length), e[c] && e.push(d);
						e.length && g.push({
							elem: i,
							handlers: e
						})
					} return h < b.length && g.push({
				elem: this,
				handlers: b.slice(h)
			}), g
		},
		fix: function(a) {
			if (a[m.expando]) return a;
			var b, c, d, e = a.type,
				f = a,
				g = this.fixHooks[e];
			g || (this.fixHooks[e] = g = Z.test(e) ? this.mouseHooks : Y.test(e) ? this.keyHooks : {}), d = g.props ? this.props
				.concat(g.props) : this.props, a = new m.Event(f), b = d.length;
			while (b--) c = d[b], a[c] = f[c];
			return a.target || (a.target = f.srcElement || y), 3 === a.target.nodeType && (a.target = a.target.parentNode), a
				.metaKey = !!a.metaKey, g.filter ? g.filter(a, f) : a
		},
		props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which"
			.split(" "),
		fixHooks: {},
		keyHooks: {
			props: "char charCode key keyCode".split(" "),
			filter: function(a, b) {
				return null == a.which && (a.which = null != b.charCode ? b.charCode : b.keyCode), a
			}
		},
		mouseHooks: {
			props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(
				" "),
			filter: function(a, b) {
				var c, d, e, f = b.button,
					g = b.fromElement;
				return null == a.pageX && null != b.clientX && (d = a.target.ownerDocument || y, e = d.documentElement, c = d.body,
						a.pageX = b.clientX + (e && e.scrollLeft || c && c.scrollLeft || 0) - (e && e.clientLeft || c && c.clientLeft ||
							0), a.pageY = b.clientY + (e && e.scrollTop || c && c.scrollTop || 0) - (e && e.clientTop || c && c.clientTop ||
							0)), !a.relatedTarget && g && (a.relatedTarget = g === a.target ? b.toElement : g), a.which || void 0 === f ||
					(a.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0), a
			}
		},
		special: {
			load: {
				noBubble: !0
			},
			focus: {
				trigger: function() {
					if (this !== ca() && this.focus) try {
						return this.focus(), !1
					} catch (a) {}
				},
				delegateType: "focusin"
			},
			blur: {
				trigger: function() {
					return this === ca() && this.blur ? (this.blur(), !1) : void 0
				},
				delegateType: "focusout"
			},
			click: {
				trigger: function() {
					return m.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0
				},
				_default: function(a) {
					return m.nodeName(a.target, "a")
				}
			},
			beforeunload: {
				postDispatch: function(a) {
					void 0 !== a.result && a.originalEvent && (a.originalEvent.returnValue = a.result)
				}
			}
		},
		simulate: function(a, b, c, d) {
			var e = m.extend(new m.Event, c, {
				type: a,
				isSimulated: !0,
				originalEvent: {}
			});
			d ? m.event.trigger(e, null, b) : m.event.dispatch.call(b, e), e.isDefaultPrevented() && c.preventDefault()
		}
	}, m.removeEvent = y.removeEventListener ? function(a, b, c) {
		a.removeEventListener && a.removeEventListener(b, c, !1)
	} : function(a, b, c) {
		var d = "on" + b;
		a.detachEvent && (typeof a[d] === K && (a[d] = null), a.detachEvent(d, c))
	}, m.Event = function(a, b) {
		return this instanceof m.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented =
			a.defaultPrevented || void 0 === a.defaultPrevented && a.returnValue === !1 ? aa : ba) : this.type = a, b && m.extend(
			this, b), this.timeStamp = a && a.timeStamp || m.now(), void(this[m.expando] = !0)) : new m.Event(a, b)
	}, m.Event.prototype = {
		isDefaultPrevented: ba,
		isPropagationStopped: ba,
		isImmediatePropagationStopped: ba,
		preventDefault: function() {
			var a = this.originalEvent;
			this.isDefaultPrevented = aa, a && (a.preventDefault ? a.preventDefault() : a.returnValue = !1)
		},
		stopPropagation: function() {
			var a = this.originalEvent;
			this.isPropagationStopped = aa, a && (a.stopPropagation && a.stopPropagation(), a.cancelBubble = !0)
		},
		stopImmediatePropagation: function() {
			var a = this.originalEvent;
			this.isImmediatePropagationStopped = aa, a && a.stopImmediatePropagation && a.stopImmediatePropagation(), this.stopPropagation()
		}
	}, m.each({
		mouseenter: "mouseover",
		mouseleave: "mouseout",
		pointerenter: "pointerover",
		pointerleave: "pointerout"
	}, function(a, b) {
		m.event.special[a] = {
			delegateType: b,
			bindType: b,
			handle: function(a) {
				var c, d = this,
					e = a.relatedTarget,
					f = a.handleObj;
				return (!e || e !== d && !m.contains(d, e)) && (a.type = f.origType, c = f.handler.apply(this, arguments), a.type =
					b), c
			}
		}
	}), k.submitBubbles || (m.event.special.submit = {
		setup: function() {
			return m.nodeName(this, "form") ? !1 : void m.event.add(this, "click._submit keypress._submit", function(a) {
				var b = a.target,
					c = m.nodeName(b, "input") || m.nodeName(b, "button") ? b.form : void 0;
				c && !m._data(c, "submitBubbles") && (m.event.add(c, "submit._submit", function(a) {
					a._submit_bubble = !0
				}), m._data(c, "submitBubbles", !0))
			})
		},
		postDispatch: function(a) {
			a._submit_bubble && (delete a._submit_bubble, this.parentNode && !a.isTrigger && m.event.simulate("submit", this
				.parentNode, a, !0))
		},
		teardown: function() {
			return m.nodeName(this, "form") ? !1 : void m.event.remove(this, "._submit")
		}
	}), k.changeBubbles || (m.event.special.change = {
		setup: function() {
			return X.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (m.event.add(this,
				"propertychange._change",
				function(a) {
					"checked" === a.originalEvent.propertyName && (this._just_changed = !0)
				}), m.event.add(this, "click._change", function(a) {
				this._just_changed && !a.isTrigger && (this._just_changed = !1), m.event.simulate("change", this, a, !0)
			})), !1) : void m.event.add(this, "beforeactivate._change", function(a) {
				var b = a.target;
				X.test(b.nodeName) && !m._data(b, "changeBubbles") && (m.event.add(b, "change._change", function(a) {
					!this.parentNode || a.isSimulated || a.isTrigger || m.event.simulate("change", this.parentNode, a, !0)
				}), m._data(b, "changeBubbles", !0))
			})
		},
		handle: function(a) {
			var b = a.target;
			return this !== b || a.isSimulated || a.isTrigger || "radio" !== b.type && "checkbox" !== b.type ? a.handleObj.handler
				.apply(this, arguments) : void 0
		},
		teardown: function() {
			return m.event.remove(this, "._change"), !X.test(this.nodeName)
		}
	}), k.focusinBubbles || m.each({
		focus: "focusin",
		blur: "focusout"
	}, function(a, b) {
		var c = function(a) {
			m.event.simulate(b, a.target, m.event.fix(a), !0)
		};
		m.event.special[b] = {
			setup: function() {
				var d = this.ownerDocument || this,
					e = m._data(d, b);
				e || d.addEventListener(a, c, !0), m._data(d, b, (e || 0) + 1)
			},
			teardown: function() {
				var d = this.ownerDocument || this,
					e = m._data(d, b) - 1;
				e ? m._data(d, b, e) : (d.removeEventListener(a, c, !0), m._removeData(d, b))
			}
		}
	}), m.fn.extend({
		on: function(a, b, c, d, e) {
			var f, g;
			if ("object" == typeof a) {
				"string" != typeof b && (c = c || b, b = void 0);
				for (f in a) this.on(f, b, c, a[f], e);
				return this
			}
			if (null == c && null == d ? (d = b, c = b = void 0) : null == d && ("string" == typeof b ? (d = c, c = void 0) :
					(d = c, c = b, b = void 0)), d === !1) d = ba;
			else if (!d) return this;
			return 1 === e && (g = d, d = function(a) {
				return m().off(a), g.apply(this, arguments)
			}, d.guid = g.guid || (g.guid = m.guid++)), this.each(function() {
				m.event.add(this, a, d, c, b)
			})
		},
		one: function(a, b, c, d) {
			return this.on(a, b, c, d, 1)
		},
		off: function(a, b, c) {
			var d, e;
			if (a && a.preventDefault && a.handleObj) return d = a.handleObj, m(a.delegateTarget).off(d.namespace ? d.origType +
				"." + d.namespace : d.origType, d.selector, d.handler), this;
			if ("object" == typeof a) {
				for (e in a) this.off(e, b, a[e]);
				return this
			}
			return (b === !1 || "function" == typeof b) && (c = b, b = void 0), c === !1 && (c = ba), this.each(function() {
				m.event.remove(this, a, c, b)
			})
		},
		trigger: function(a, b) {
			return this.each(function() {
				m.event.trigger(a, b, this)
			})
		},
		triggerHandler: function(a, b) {
			var c = this[0];
			return c ? m.event.trigger(a, b, c, !0) : void 0
		}
	});

	function da(a) {
		var b = ea.split("|"),
			c = a.createDocumentFragment();
		if (c.createElement)
			while (b.length) c.createElement(b.pop());
		return c
	}
	var ea =
		"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
		fa = / jQuery\d+="(?:null|\d+)"/g,
		ga = new RegExp("<(?:" + ea + ")[\\s/>]", "i"),
		ha = /^\s+/,
		ia = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
		ja = /<([\w:]+)/,
		ka = /<tbody/i,
		la = /<|&#?\w+;/,
		ma = /<(?:script|style|link)/i,
		na = /checked\s*(?:[^=]|=\s*.checked.)/i,
		oa = /^$|\/(?:java|ecma)script/i,
		pa = /^true\/(.*)/,
		qa = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
		ra = {
			option: [1, "<select multiple='multiple'>", "</select>"],
			legend: [1, "<fieldset>", "</fieldset>"],
			area: [1, "<map>", "</map>"],
			param: [1, "<object>", "</object>"],
			thead: [1, "<table>", "</table>"],
			tr: [2, "<table><tbody>", "</tbody></table>"],
			col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
			td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
			_default: k.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
		},
		sa = da(y),
		ta = sa.appendChild(y.createElement("div"));
	ra.optgroup = ra.option, ra.tbody = ra.tfoot = ra.colgroup = ra.caption = ra.thead, ra.th = ra.td;

	function ua(a, b) {
		var c, d, e = 0,
			f = typeof a.getElementsByTagName !== K ? a.getElementsByTagName(b || "*") : typeof a.querySelectorAll !== K ? a.querySelectorAll(
				b || "*") : void 0;
		if (!f)
			for (f = [], c = a.childNodes || a; null != (d = c[e]); e++) !b || m.nodeName(d, b) ? f.push(d) : m.merge(f, ua(d,
				b));
		return void 0 === b || b && m.nodeName(a, b) ? m.merge([a], f) : f
	}

	function va(a) {
		W.test(a.type) && (a.defaultChecked = a.checked)
	}

	function wa(a, b) {
		return m.nodeName(a, "table") && m.nodeName(11 !== b.nodeType ? b : b.firstChild, "tr") ? a.getElementsByTagName(
			"tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
	}

	function xa(a) {
		return a.type = (null !== m.find.attr(a, "type")) + "/" + a.type, a
	}

	function ya(a) {
		var b = pa.exec(a.type);
		return b ? a.type = b[1] : a.removeAttribute("type"), a
	}

	function za(a, b) {
		for (var c, d = 0; null != (c = a[d]); d++) m._data(c, "globalEval", !b || m._data(b[d], "globalEval"))
	}

	function Aa(a, b) {
		if (1 === b.nodeType && m.hasData(a)) {
			var c, d, e, f = m._data(a),
				g = m._data(b, f),
				h = f.events;
			if (h) {
				delete g.handle, g.events = {};
				for (c in h)
					for (d = 0, e = h[c].length; e > d; d++) m.event.add(b, c, h[c][d])
			}
			g.data && (g.data = m.extend({}, g.data))
		}
	}

	function Ba(a, b) {
		var c, d, e;
		if (1 === b.nodeType) {
			if (c = b.nodeName.toLowerCase(), !k.noCloneEvent && b[m.expando]) {
				e = m._data(b);
				for (d in e.events) m.removeEvent(b, d, e.handle);
				b.removeAttribute(m.expando)
			}
			"script" === c && b.text !== a.text ? (xa(b).text = a.text, ya(b)) : "object" === c ? (b.parentNode && (b.outerHTML =
					a.outerHTML), k.html5Clone && a.innerHTML && !m.trim(b.innerHTML) && (b.innerHTML = a.innerHTML)) : "input" ===
				c && W.test(a.type) ? (b.defaultChecked = b.checked = a.checked, b.value !== a.value && (b.value = a.value)) :
				"option" === c ? b.defaultSelected = b.selected = a.defaultSelected : ("input" === c || "textarea" === c) && (b.defaultValue =
					a.defaultValue)
		}
	}
	m.extend({
		clone: function(a, b, c) {
			var d, e, f, g, h, i = m.contains(a.ownerDocument, a);
			if (k.html5Clone || m.isXMLDoc(a) || !ga.test("<" + a.nodeName + ">") ? f = a.cloneNode(!0) : (ta.innerHTML = a.outerHTML,
					ta.removeChild(f = ta.firstChild)), !(k.noCloneEvent && k.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType ||
					m.isXMLDoc(a)))
				for (d = ua(f), h = ua(a), g = 0; null != (e = h[g]); ++g) d[g] && Ba(e, d[g]);
			if (b)
				if (c)
					for (h = h || ua(a), d = d || ua(f), g = 0; null != (e = h[g]); g++) Aa(e, d[g]);
				else Aa(a, f);
			return d = ua(f, "script"), d.length > 0 && za(d, !i && ua(a, "script")), d = h = e = null, f
		},
		buildFragment: function(a, b, c, d) {
			for (var e, f, g, h, i, j, l, n = a.length, o = da(b), p = [], q = 0; n > q; q++)
				if (f = a[q], f || 0 === f)
					if ("object" === m.type(f)) m.merge(p, f.nodeType ? [f] : f);
					else if (la.test(f)) {
				h = h || o.appendChild(b.createElement("div")), i = (ja.exec(f) || ["", ""])[1].toLowerCase(), l = ra[i] || ra._default,
					h.innerHTML = l[1] + f.replace(ia, "<$1></$2>") + l[2], e = l[0];
				while (e--) h = h.lastChild;
				if (!k.leadingWhitespace && ha.test(f) && p.push(b.createTextNode(ha.exec(f)[0])), !k.tbody) {
					f = "table" !== i || ka.test(f) ? "<table>" !== l[1] || ka.test(f) ? 0 : h : h.firstChild, e = f && f.childNodes
						.length;
					while (e--) m.nodeName(j = f.childNodes[e], "tbody") && !j.childNodes.length && f.removeChild(j)
				}
				m.merge(p, h.childNodes), h.textContent = "";
				while (h.firstChild) h.removeChild(h.firstChild);
				h = o.lastChild
			} else p.push(b.createTextNode(f));
			h && o.removeChild(h), k.appendChecked || m.grep(ua(p, "input"), va), q = 0;
			while (f = p[q++])
				if ((!d || -1 === m.inArray(f, d)) && (g = m.contains(f.ownerDocument, f), h = ua(o.appendChild(f), "script"),
						g && za(h), c)) {
					e = 0;
					while (f = h[e++]) oa.test(f.type || "") && c.push(f)
				} return h = null, o
		},
		cleanData: function(a, b) {
			for (var d, e, f, g, h = 0, i = m.expando, j = m.cache, l = k.deleteExpando, n = m.event.special; null != (d = a[
					h]); h++)
				if ((b || m.acceptData(d)) && (f = d[i], g = f && j[f])) {
					if (g.events)
						for (e in g.events) n[e] ? m.event.remove(d, e) : m.removeEvent(d, e, g.handle);
					j[f] && (delete j[f], l ? delete d[i] : typeof d.removeAttribute !== K ? d.removeAttribute(i) : d[i] = null, c
						.push(f))
				}
		}
	}), m.fn.extend({
		text: function(a) {
			return V(this, function(a) {
				return void 0 === a ? m.text(this) : this.empty().append((this[0] && this[0].ownerDocument || y).createTextNode(
					a))
			}, null, a, arguments.length)
		},
		append: function() {
			return this.domManip(arguments, function(a) {
				if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
					var b = wa(this, a);
					b.appendChild(a)
				}
			})
		},
		prepend: function() {
			return this.domManip(arguments, function(a) {
				if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
					var b = wa(this, a);
					b.insertBefore(a, b.firstChild)
				}
			})
		},
		before: function() {
			return this.domManip(arguments, function(a) {
				this.parentNode && this.parentNode.insertBefore(a, this)
			})
		},
		after: function() {
			return this.domManip(arguments, function(a) {
				this.parentNode && this.parentNode.insertBefore(a, this.nextSibling)
			})
		},
		remove: function(a, b) {
			for (var c, d = a ? m.filter(a, this) : this, e = 0; null != (c = d[e]); e++) b || 1 !== c.nodeType || m.cleanData(
				ua(c)), c.parentNode && (b && m.contains(c.ownerDocument, c) && za(ua(c, "script")), c.parentNode.removeChild(
				c));
			return this
		},
		empty: function() {
			for (var a, b = 0; null != (a = this[b]); b++) {
				1 === a.nodeType && m.cleanData(ua(a, !1));
				while (a.firstChild) a.removeChild(a.firstChild);
				a.options && m.nodeName(a, "select") && (a.options.length = 0)
			}
			return this
		},
		clone: function(a, b) {
			return a = null == a ? !1 : a, b = null == b ? a : b, this.map(function() {
				return m.clone(this, a, b)
			})
		},
		html: function(a) {
			return V(this, function(a) {
				var b = this[0] || {},
					c = 0,
					d = this.length;
				if (void 0 === a) return 1 === b.nodeType ? b.innerHTML.replace(fa, "") : void 0;
				if (!("string" != typeof a || ma.test(a) || !k.htmlSerialize && ga.test(a) || !k.leadingWhitespace && ha.test(
						a) || ra[(ja.exec(a) || ["", ""])[1].toLowerCase()])) {
					a = a.replace(ia, "<$1></$2>");
					try {
						for (; d > c; c++) b = this[c] || {}, 1 === b.nodeType && (m.cleanData(ua(b, !1)), b.innerHTML = a);
						b = 0
					} catch (e) {}
				}
				b && this.empty().append(a)
			}, null, a, arguments.length)
		},
		replaceWith: function() {
			var a = arguments[0];
			return this.domManip(arguments, function(b) {
				a = this.parentNode, m.cleanData(ua(this)), a && a.replaceChild(b, this)
			}), a && (a.length || a.nodeType) ? this : this.remove()
		},
		detach: function(a) {
			return this.remove(a, !0)
		},
		domManip: function(a, b) {
			a = e.apply([], a);
			var c, d, f, g, h, i, j = 0,
				l = this.length,
				n = this,
				o = l - 1,
				p = a[0],
				q = m.isFunction(p);
			if (q || l > 1 && "string" == typeof p && !k.checkClone && na.test(p)) return this.each(function(c) {
				var d = n.eq(c);
				q && (a[0] = p.call(this, c, d.html())), d.domManip(a, b)
			});
			if (l && (i = m.buildFragment(a, this[0].ownerDocument, !1, this), c = i.firstChild, 1 === i.childNodes.length &&
					(i = c), c)) {
				for (g = m.map(ua(i, "script"), xa), f = g.length; l > j; j++) d = i, j !== o && (d = m.clone(d, !0, !0), f &&
					m.merge(g, ua(d, "script"))), b.call(this[j], d, j);
				if (f)
					for (h = g[g.length - 1].ownerDocument, m.map(g, ya), j = 0; f > j; j++) d = g[j], oa.test(d.type || "") && !m
						._data(d, "globalEval") && m.contains(h, d) && (d.src ? m._evalUrl && m._evalUrl(d.src) : m.globalEval((d.text ||
							d.textContent || d.innerHTML || "").replace(qa, "")));
				i = c = null
			}
			return this
		}
	}), m.each({
		appendTo: "append",
		prependTo: "prepend",
		insertBefore: "before",
		insertAfter: "after",
		replaceAll: "replaceWith"
	}, function(a, b) {
		m.fn[a] = function(a) {
			for (var c, d = 0, e = [], g = m(a), h = g.length - 1; h >= d; d++) c = d === h ? this : this.clone(!0), m(g[d])[
				b](c), f.apply(e, c.get());
			return this.pushStack(e)
		}
	});
	var Ca, Da = {};

	function Ea(b, c) {
		var d, e = m(c.createElement(b)).appendTo(c.body),
			f = a.getDefaultComputedStyle && (d = a.getDefaultComputedStyle(e[0])) ? d.display : m.css(e[0], "display");
		return e.detach(), f
	}

	function Fa(a) {
		var b = y,
			c = Da[a];
		return c || (c = Ea(a, b), "none" !== c && c || (Ca = (Ca || m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(
			b.documentElement), b = (Ca[0].contentWindow || Ca[0].contentDocument).document, b.write(), b.close(), c = Ea(a,
			b), Ca.detach()), Da[a] = c), c
	}! function() {
		var a;
		k.shrinkWrapBlocks = function() {
			if (null != a) return a;
			a = !1;
			var b, c, d;
			return c = y.getElementsByTagName("body")[0], c && c.style ? (b = y.createElement("div"), d = y.createElement(
				"div"), d.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", c.appendChild(d).appendChild(
				b), typeof b.style.zoom !== K && (b.style.cssText =
				"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",
				b.appendChild(y.createElement("div")).style.width = "5px", a = 3 !== b.offsetWidth), c.removeChild(d), a) : void 0
		}
	}();
	var Ga = /^margin/,
		Ha = new RegExp("^(" + S + ")(?!px)[a-z%]+$", "i"),
		Ia, Ja, Ka = /^(top|right|bottom|left)$/;
	a.getComputedStyle ? (Ia = function(b) {
		return b.ownerDocument.defaultView.opener ? b.ownerDocument.defaultView.getComputedStyle(b, null) : a.getComputedStyle(
			b, null)
	}, Ja = function(a, b, c) {
		var d, e, f, g, h = a.style;
		return c = c || Ia(a), g = c ? c.getPropertyValue(b) || c[b] : void 0, c && ("" !== g || m.contains(a.ownerDocument,
			a) || (g = m.style(a, b)), Ha.test(g) && Ga.test(b) && (d = h.width, e = h.minWidth, f = h.maxWidth, h.minWidth =
			h.maxWidth = h.width = g, g = c.width, h.width = d, h.minWidth = e, h.maxWidth = f)), void 0 === g ? g : g + ""
	}) : y.documentElement.currentStyle && (Ia = function(a) {
		return a.currentStyle
	}, Ja = function(a, b, c) {
		var d, e, f, g, h = a.style;
		return c = c || Ia(a), g = c ? c[b] : void 0, null == g && h && h[b] && (g = h[b]), Ha.test(g) && !Ka.test(b) && (
			d = h.left, e = a.runtimeStyle, f = e && e.left, f && (e.left = a.currentStyle.left), h.left = "fontSize" === b ?
			"1em" : g, g = h.pixelLeft + "px", h.left = d, f && (e.left = f)), void 0 === g ? g : g + "" || "auto"
	});

	function La(a, b) {
		return {
			get: function() {
				var c = a();
				if (null != c) return c ? void delete this.get : (this.get = b).apply(this, arguments)
			}
		}
	}! function() {
		var b, c, d, e, f, g, h;
		if (b = y.createElement("div"), b.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",
			d = b.getElementsByTagName("a")[0], c = d && d.style) {
			c.cssText = "float:left;opacity:.5", k.opacity = "0.5" === c.opacity, k.cssFloat = !!c.cssFloat, b.style.backgroundClip =
				"content-box", b.cloneNode(!0).style.backgroundClip = "", k.clearCloneStyle = "content-box" === b.style.backgroundClip,
				k.boxSizing = "" === c.boxSizing || "" === c.MozBoxSizing || "" === c.WebkitBoxSizing, m.extend(k, {
					reliableHiddenOffsets: function() {
						return null == g && i(), g
					},
					boxSizingReliable: function() {
						return null == f && i(), f
					},
					pixelPosition: function() {
						return null == e && i(), e
					},
					reliableMarginRight: function() {
						return null == h && i(), h
					}
				});

			function i() {
				var b, c, d, i;
				c = y.getElementsByTagName("body")[0], c && c.style && (b = y.createElement("div"), d = y.createElement("div"), d.style
					.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", c.appendChild(d).appendChild(b), b.style
					.cssText =
					"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",
					e = f = !1, h = !0, a.getComputedStyle && (e = "1%" !== (a.getComputedStyle(b, null) || {}).top, f = "4px" ===
						(a.getComputedStyle(b, null) || {
							width: "4px"
						}).width, i = b.appendChild(y.createElement("div")), i.style.cssText = b.style.cssText =
						"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",
						i.style.marginRight = i.style.width = "0", b.style.width = "1px", h = !parseFloat((a.getComputedStyle(i, null) ||
							{}).marginRight), b.removeChild(i)), b.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", i = b.getElementsByTagName(
						"td"), i[0].style.cssText = "margin:0;border:0;padding:0;display:none", g = 0 === i[0].offsetHeight, g && (i[0]
						.style.display = "", i[1].style.display = "none", g = 0 === i[0].offsetHeight), c.removeChild(d))
			}
		}
	}(), m.swap = function(a, b, c, d) {
		var e, f, g = {};
		for (f in b) g[f] = a.style[f], a.style[f] = b[f];
		e = c.apply(a, d || []);
		for (f in b) a.style[f] = g[f];
		return e
	};
	var Ma = /alpha\([^)]*\)/i,
		Na = /opacity\s*=\s*([^)]*)/,
		Oa = /^(none|table(?!-c[ea]).+)/,
		Pa = new RegExp("^(" + S + ")(.*)$", "i"),
		Qa = new RegExp("^([+-])=(" + S + ")", "i"),
		Ra = {
			position: "absolute",
			visibility: "hidden",
			display: "block"
		},
		Sa = {
			letterSpacing: "0",
			fontWeight: "400"
		},
		Ta = ["Webkit", "O", "Moz", "ms"];

	function Ua(a, b) {
		if (b in a) return b;
		var c = b.charAt(0).toUpperCase() + b.slice(1),
			d = b,
			e = Ta.length;
		while (e--)
			if (b = Ta[e] + c, b in a) return b;
		return d
	}

	function Va(a, b) {
		for (var c, d, e, f = [], g = 0, h = a.length; h > g; g++) d = a[g], d.style && (f[g] = m._data(d, "olddisplay"), c =
			d.style.display, b ? (f[g] || "none" !== c || (d.style.display = ""), "" === d.style.display && U(d) && (f[g] = m._data(
				d, "olddisplay", Fa(d.nodeName)))) : (e = U(d), (c && "none" !== c || !e) && m._data(d, "olddisplay", e ? c : m.css(
				d, "display"))));
		for (g = 0; h > g; g++) d = a[g], d.style && (b && "none" !== d.style.display && "" !== d.style.display || (d.style.display =
			b ? f[g] || "" : "none"));
		return a
	}

	function Wa(a, b, c) {
		var d = Pa.exec(b);
		return d ? Math.max(0, d[1] - (c || 0)) + (d[2] || "px") : b
	}

	function Xa(a, b, c, d, e) {
		for (var f = c === (d ? "border" : "content") ? 4 : "width" === b ? 1 : 0, g = 0; 4 > f; f += 2) "margin" === c && (
			g += m.css(a, c + T[f], !0, e)), d ? ("content" === c && (g -= m.css(a, "padding" + T[f], !0, e)), "margin" !== c &&
			(g -= m.css(a, "border" + T[f] + "Width", !0, e))) : (g += m.css(a, "padding" + T[f], !0, e), "padding" !== c && (
			g += m.css(a, "border" + T[f] + "Width", !0, e)));
		return g
	}

	function Ya(a, b, c) {
		var d = !0,
			e = "width" === b ? a.offsetWidth : a.offsetHeight,
			f = Ia(a),
			g = k.boxSizing && "border-box" === m.css(a, "boxSizing", !1, f);
		if (0 >= e || null == e) {
			if (e = Ja(a, b, f), (0 > e || null == e) && (e = a.style[b]), Ha.test(e)) return e;
			d = g && (k.boxSizingReliable() || e === a.style[b]), e = parseFloat(e) || 0
		}
		return e + Xa(a, b, c || (g ? "border" : "content"), d, f) + "px"
	}
	m.extend({
		cssHooks: {
			opacity: {
				get: function(a, b) {
					if (b) {
						var c = Ja(a, "opacity");
						return "" === c ? "1" : c
					}
				}
			}
		},
		cssNumber: {
			columnCount: !0,
			fillOpacity: !0,
			flexGrow: !0,
			flexShrink: !0,
			fontWeight: !0,
			lineHeight: !0,
			opacity: !0,
			order: !0,
			orphans: !0,
			widows: !0,
			zIndex: !0,
			zoom: !0
		},
		cssProps: {
			"float": k.cssFloat ? "cssFloat" : "styleFloat"
		},
		style: function(a, b, c, d) {
			if (a && 3 !== a.nodeType && 8 !== a.nodeType && a.style) {
				var e, f, g, h = m.camelCase(b),
					i = a.style;
				if (b = m.cssProps[h] || (m.cssProps[h] = Ua(i, h)), g = m.cssHooks[b] || m.cssHooks[h], void 0 === c) return g &&
					"get" in g && void 0 !== (e = g.get(a, !1, d)) ? e : i[b];
				if (f = typeof c, "string" === f && (e = Qa.exec(c)) && (c = (e[1] + 1) * e[2] + parseFloat(m.css(a, b)), f =
						"number"), null != c && c === c && ("number" !== f || m.cssNumber[h] || (c += "px"), k.clearCloneStyle || "" !==
						c || 0 !== b.indexOf("background") || (i[b] = "inherit"), !(g && "set" in g && void 0 === (c = g.set(a, c, d)))
					)) try {
					i[b] = c
				} catch (j) {}
			}
		},
		css: function(a, b, c, d) {
			var e, f, g, h = m.camelCase(b);
			return b = m.cssProps[h] || (m.cssProps[h] = Ua(a.style, h)), g = m.cssHooks[b] || m.cssHooks[h], g && "get" in
				g && (f = g.get(a, !0, c)), void 0 === f && (f = Ja(a, b, d)), "normal" === f && b in Sa && (f = Sa[b]), "" ===
				c || c ? (e = parseFloat(f), c === !0 || m.isNumeric(e) ? e || 0 : f) : f
		}
	}), m.each(["height", "width"], function(a, b) {
		m.cssHooks[b] = {
			get: function(a, c, d) {
				return c ? Oa.test(m.css(a, "display")) && 0 === a.offsetWidth ? m.swap(a, Ra, function() {
					return Ya(a, b, d)
				}) : Ya(a, b, d) : void 0
			},
			set: function(a, c, d) {
				var e = d && Ia(a);
				return Wa(a, c, d ? Xa(a, b, d, k.boxSizing && "border-box" === m.css(a, "boxSizing", !1, e), e) : 0)
			}
		}
	}), k.opacity || (m.cssHooks.opacity = {
		get: function(a, b) {
			return Na.test((b && a.currentStyle ? a.currentStyle.filter : a.style.filter) || "") ? .01 * parseFloat(RegExp.$1) +
				"" : b ? "1" : ""
		},
		set: function(a, b) {
			var c = a.style,
				d = a.currentStyle,
				e = m.isNumeric(b) ? "alpha(opacity=" + 100 * b + ")" : "",
				f = d && d.filter || c.filter || "";
			c.zoom = 1, (b >= 1 || "" === b) && "" === m.trim(f.replace(Ma, "")) && c.removeAttribute && (c.removeAttribute(
				"filter"), "" === b || d && !d.filter) || (c.filter = Ma.test(f) ? f.replace(Ma, e) : f + " " + e)
		}
	}), m.cssHooks.marginRight = La(k.reliableMarginRight, function(a, b) {
		return b ? m.swap(a, {
			display: "inline-block"
		}, Ja, [a, "marginRight"]) : void 0
	}), m.each({
		margin: "",
		padding: "",
		border: "Width"
	}, function(a, b) {
		m.cssHooks[a + b] = {
			expand: function(c) {
				for (var d = 0, e = {}, f = "string" == typeof c ? c.split(" ") : [c]; 4 > d; d++) e[a + T[d] + b] = f[d] || f[
					d - 2] || f[0];
				return e
			}
		}, Ga.test(a) || (m.cssHooks[a + b].set = Wa)
	}), m.fn.extend({
		css: function(a, b) {
			return V(this, function(a, b, c) {
				var d, e, f = {},
					g = 0;
				if (m.isArray(b)) {
					for (d = Ia(a), e = b.length; e > g; g++) f[b[g]] = m.css(a, b[g], !1, d);
					return f
				}
				return void 0 !== c ? m.style(a, b, c) : m.css(a, b)
			}, a, b, arguments.length > 1)
		},
		show: function() {
			return Va(this, !0)
		},
		hide: function() {
			return Va(this)
		},
		toggle: function(a) {
			return "boolean" == typeof a ? a ? this.show() : this.hide() : this.each(function() {
				U(this) ? m(this).show() : m(this).hide()
			})
		}
	});

	function Za(a, b, c, d, e) {
		return new Za.prototype.init(a, b, c, d, e)
	}
	m.Tween = Za, Za.prototype = {
		constructor: Za,
		init: function(a, b, c, d, e, f) {
			this.elem = a, this.prop = c, this.easing = e || "swing", this.options = b, this.start = this.now = this.cur(),
				this.end = d, this.unit = f || (m.cssNumber[c] ? "" : "px")
		},
		cur: function() {
			var a = Za.propHooks[this.prop];
			return a && a.get ? a.get(this) : Za.propHooks._default.get(this)
		},
		run: function(a) {
			var b, c = Za.propHooks[this.prop];
			return this.options.duration ? this.pos = b = m.easing[this.easing](a, this.options.duration * a, 0, 1, this.options
					.duration) : this.pos = b = a, this.now = (this.end - this.start) * b + this.start, this.options.step && this.options
				.step.call(this.elem, this.now, this), c && c.set ? c.set(this) : Za.propHooks._default.set(this), this
		}
	}, Za.prototype.init.prototype = Za.prototype, Za.propHooks = {
		_default: {
			get: function(a) {
				var b;
				return null == a.elem[a.prop] || a.elem.style && null != a.elem.style[a.prop] ? (b = m.css(a.elem, a.prop, ""),
					b && "auto" !== b ? b : 0) : a.elem[a.prop]
			},
			set: function(a) {
				m.fx.step[a.prop] ? m.fx.step[a.prop](a) : a.elem.style && (null != a.elem.style[m.cssProps[a.prop]] || m.cssHooks[
					a.prop]) ? m.style(a.elem, a.prop, a.now + a.unit) : a.elem[a.prop] = a.now
			}
		}
	}, Za.propHooks.scrollTop = Za.propHooks.scrollLeft = {
		set: function(a) {
			a.elem.nodeType && a.elem.parentNode && (a.elem[a.prop] = a.now)
		}
	}, m.easing = {
		linear: function(a) {
			return a
		},
		swing: function(a) {
			return .5 - Math.cos(a * Math.PI) / 2
		}
	}, m.fx = Za.prototype.init, m.fx.step = {};
	var $a, _a, ab = /^(?:toggle|show|hide)$/,
		bb = new RegExp("^(?:([+-])=|)(" + S + ")([a-z%]*)$", "i"),
		cb = /queueHooks$/,
		db = [ib],
		eb = {
			"*": [function(a, b) {
				var c = this.createTween(a, b),
					d = c.cur(),
					e = bb.exec(b),
					f = e && e[3] || (m.cssNumber[a] ? "" : "px"),
					g = (m.cssNumber[a] || "px" !== f && +d) && bb.exec(m.css(c.elem, a)),
					h = 1,
					i = 20;
				if (g && g[3] !== f) {
					f = f || g[3], e = e || [], g = +d || 1;
					do h = h || ".5", g /= h, m.style(c.elem, a, g + f); while (h !== (h = c.cur() / d) && 1 !== h && --i)
				}
				return e && (g = c.start = +g || +d || 0, c.unit = f, c.end = e[1] ? g + (e[1] + 1) * e[2] : +e[2]), c
			}]
		};

	function fb() {
		return setTimeout(function() {
			$a = void 0
		}), $a = m.now()
	}

	function gb(a, b) {
		var c, d = {
				height: a
			},
			e = 0;
		for (b = b ? 1 : 0; 4 > e; e += 2 - b) c = T[e], d["margin" + c] = d["padding" + c] = a;
		return b && (d.opacity = d.width = a), d
	}

	function hb(a, b, c) {
		for (var d, e = (eb[b] || []).concat(eb["*"]), f = 0, g = e.length; g > f; f++)
			if (d = e[f].call(c, b, a)) return d
	}

	function ib(a, b, c) {
		var d, e, f, g, h, i, j, l, n = this,
			o = {},
			p = a.style,
			q = a.nodeType && U(a),
			r = m._data(a, "fxshow");
		c.queue || (h = m._queueHooks(a, "fx"), null == h.unqueued && (h.unqueued = 0, i = h.empty.fire, h.empty.fire =
			function() {
				h.unqueued || i()
			}), h.unqueued++, n.always(function() {
			n.always(function() {
				h.unqueued--, m.queue(a, "fx").length || h.empty.fire()
			})
		})), 1 === a.nodeType && ("height" in b || "width" in b) && (c.overflow = [p.overflow, p.overflowX, p.overflowY], j =
			m.css(a, "display"), l = "none" === j ? m._data(a, "olddisplay") || Fa(a.nodeName) : j, "inline" === l && "none" ===
			m.css(a, "float") && (k.inlineBlockNeedsLayout && "inline" !== Fa(a.nodeName) ? p.zoom = 1 : p.display =
				"inline-block")), c.overflow && (p.overflow = "hidden", k.shrinkWrapBlocks() || n.always(function() {
			p.overflow = c.overflow[0], p.overflowX = c.overflow[1], p.overflowY = c.overflow[2]
		}));
		for (d in b)
			if (e = b[d], ab.exec(e)) {
				if (delete b[d], f = f || "toggle" === e, e === (q ? "hide" : "show")) {
					if ("show" !== e || !r || void 0 === r[d]) continue;
					q = !0
				}
				o[d] = r && r[d] || m.style(a, d)
			} else j = void 0;
		if (m.isEmptyObject(o)) "inline" === ("none" === j ? Fa(a.nodeName) : j) && (p.display = j);
		else {
			r ? "hidden" in r && (q = r.hidden) : r = m._data(a, "fxshow", {}), f && (r.hidden = !q), q ? m(a).show() : n.done(
				function() {
					m(a).hide()
				}), n.done(function() {
				var b;
				m._removeData(a, "fxshow");
				for (b in o) m.style(a, b, o[b])
			});
			for (d in o) g = hb(q ? r[d] : 0, d, n), d in r || (r[d] = g.start, q && (g.end = g.start, g.start = "width" === d ||
				"height" === d ? 1 : 0))
		}
	}

	function jb(a, b) {
		var c, d, e, f, g;
		for (c in a)
			if (d = m.camelCase(c), e = b[d], f = a[c], m.isArray(f) && (e = f[1], f = a[c] = f[0]), c !== d && (a[d] = f,
					delete a[c]), g = m.cssHooks[d], g && "expand" in g) {
				f = g.expand(f), delete a[d];
				for (c in f) c in a || (a[c] = f[c], b[c] = e)
			} else b[d] = e
	}

	function kb(a, b, c) {
		var d, e, f = 0,
			g = db.length,
			h = m.Deferred().always(function() {
				delete i.elem
			}),
			i = function() {
				if (e) return !1;
				for (var b = $a || fb(), c = Math.max(0, j.startTime + j.duration - b), d = c / j.duration || 0, f = 1 - d, g = 0,
						i = j.tweens.length; i > g; g++) j.tweens[g].run(f);
				return h.notifyWith(a, [j, f, c]), 1 > f && i ? c : (h.resolveWith(a, [j]), !1)
			},
			j = h.promise({
				elem: a,
				props: m.extend({}, b),
				opts: m.extend(!0, {
					specialEasing: {}
				}, c),
				originalProperties: b,
				originalOptions: c,
				startTime: $a || fb(),
				duration: c.duration,
				tweens: [],
				createTween: function(b, c) {
					var d = m.Tween(a, j.opts, b, c, j.opts.specialEasing[b] || j.opts.easing);
					return j.tweens.push(d), d
				},
				stop: function(b) {
					var c = 0,
						d = b ? j.tweens.length : 0;
					if (e) return this;
					for (e = !0; d > c; c++) j.tweens[c].run(1);
					return b ? h.resolveWith(a, [j, b]) : h.rejectWith(a, [j, b]), this
				}
			}),
			k = j.props;
		for (jb(k, j.opts.specialEasing); g > f; f++)
			if (d = db[f].call(j, a, k, j.opts)) return d;
		return m.map(k, hb, j), m.isFunction(j.opts.start) && j.opts.start.call(a, j), m.fx.timer(m.extend(i, {
			elem: a,
			anim: j,
			queue: j.opts.queue
		})), j.progress(j.opts.progress).done(j.opts.done, j.opts.complete).fail(j.opts.fail).always(j.opts.always)
	}
	m.Animation = m.extend(kb, {
			tweener: function(a, b) {
				m.isFunction(a) ? (b = a, a = ["*"]) : a = a.split(" ");
				for (var c, d = 0, e = a.length; e > d; d++) c = a[d], eb[c] = eb[c] || [], eb[c].unshift(b)
			},
			prefilter: function(a, b) {
				b ? db.unshift(a) : db.push(a)
			}
		}), m.speed = function(a, b, c) {
			var d = a && "object" == typeof a ? m.extend({}, a) : {
				complete: c || !c && b || m.isFunction(a) && a,
				duration: a,
				easing: c && b || b && !m.isFunction(b) && b
			};
			return d.duration = m.fx.off ? 0 : "number" == typeof d.duration ? d.duration : d.duration in m.fx.speeds ? m.fx.speeds[
					d.duration] : m.fx.speeds._default, (null == d.queue || d.queue === !0) && (d.queue = "fx"), d.old = d.complete,
				d.complete = function() {
					m.isFunction(d.old) && d.old.call(this), d.queue && m.dequeue(this, d.queue)
				}, d
		}, m.fn.extend({
			fadeTo: function(a, b, c, d) {
				return this.filter(U).css("opacity", 0).show().end().animate({
					opacity: b
				}, a, c, d)
			},
			animate: function(a, b, c, d) {
				var e = m.isEmptyObject(a),
					f = m.speed(b, c, d),
					g = function() {
						var b = kb(this, m.extend({}, a), f);
						(e || m._data(this, "finish")) && b.stop(!0)
					};
				return g.finish = g, e || f.queue === !1 ? this.each(g) : this.queue(f.queue, g)
			},
			stop: function(a, b, c) {
				var d = function(a) {
					var b = a.stop;
					delete a.stop, b(c)
				};
				return "string" != typeof a && (c = b, b = a, a = void 0), b && a !== !1 && this.queue(a || "fx", []), this.each(
					function() {
						var b = !0,
							e = null != a && a + "queueHooks",
							f = m.timers,
							g = m._data(this);
						if (e) g[e] && g[e].stop && d(g[e]);
						else
							for (e in g) g[e] && g[e].stop && cb.test(e) && d(g[e]);
						for (e = f.length; e--;) f[e].elem !== this || null != a && f[e].queue !== a || (f[e].anim.stop(c), b = !1, f
							.splice(e, 1));
						(b || !c) && m.dequeue(this, a)
					})
			},
			finish: function(a) {
				return a !== !1 && (a = a || "fx"), this.each(function() {
					var b, c = m._data(this),
						d = c[a + "queue"],
						e = c[a + "queueHooks"],
						f = m.timers,
						g = d ? d.length : 0;
					for (c.finish = !0, m.queue(this, a, []), e && e.stop && e.stop.call(this, !0), b = f.length; b--;) f[b].elem ===
						this && f[b].queue === a && (f[b].anim.stop(!0), f.splice(b, 1));
					for (b = 0; g > b; b++) d[b] && d[b].finish && d[b].finish.call(this);
					delete c.finish
				})
			}
		}), m.each(["toggle", "show", "hide"], function(a, b) {
			var c = m.fn[b];
			m.fn[b] = function(a, d, e) {
				return null == a || "boolean" == typeof a ? c.apply(this, arguments) : this.animate(gb(b, !0), a, d, e)
			}
		}), m.each({
			slideDown: gb("show"),
			slideUp: gb("hide"),
			slideToggle: gb("toggle"),
			fadeIn: {
				opacity: "show"
			},
			fadeOut: {
				opacity: "hide"
			},
			fadeToggle: {
				opacity: "toggle"
			}
		}, function(a, b) {
			m.fn[a] = function(a, c, d) {
				return this.animate(b, a, c, d)
			}
		}), m.timers = [], m.fx.tick = function() {
			var a, b = m.timers,
				c = 0;
			for ($a = m.now(); c < b.length; c++) a = b[c], a() || b[c] !== a || b.splice(c--, 1);
			b.length || m.fx.stop(), $a = void 0
		}, m.fx.timer = function(a) {
			m.timers.push(a), a() ? m.fx.start() : m.timers.pop()
		}, m.fx.interval = 13, m.fx.start = function() {
			_a || (_a = setInterval(m.fx.tick, m.fx.interval))
		}, m.fx.stop = function() {
			clearInterval(_a), _a = null
		}, m.fx.speeds = {
			slow: 600,
			fast: 200,
			_default: 400
		}, m.fn.delay = function(a, b) {
			return a = m.fx ? m.fx.speeds[a] || a : a, b = b || "fx", this.queue(b, function(b, c) {
				var d = setTimeout(b, a);
				c.stop = function() {
					clearTimeout(d)
				}
			})
		},
		function() {
			var a, b, c, d, e;
			b = y.createElement("div"), b.setAttribute("className", "t"), b.innerHTML =
				"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", d = b.getElementsByTagName("a")[0], c = y.createElement(
					"select"), e = c.appendChild(y.createElement("option")), a = b.getElementsByTagName("input")[0], d.style.cssText =
				"top:1px", k.getSetAttribute = "t" !== b.className, k.style = /top/.test(d.getAttribute("style")), k.hrefNormalized =
				"/a" === d.getAttribute("href"), k.checkOn = !!a.value, k.optSelected = e.selected, k.enctype = !!y.createElement(
					"form").enctype, c.disabled = !0, k.optDisabled = !e.disabled, a = y.createElement("input"), a.setAttribute(
					"value", ""), k.input = "" === a.getAttribute("value"), a.value = "t", a.setAttribute("type", "radio"), k.radioValue =
				"t" === a.value
		}();
	var lb = /\r/g;
	m.fn.extend({
		val: function(a) {
			var b, c, d, e = this[0]; {
				if (arguments.length) return d = m.isFunction(a), this.each(function(c) {
					var e;
					1 === this.nodeType && (e = d ? a.call(this, c, m(this).val()) : a, null == e ? e = "" : "number" == typeof e ?
						e += "" : m.isArray(e) && (e = m.map(e, function(a) {
							return null == a ? "" : a + ""
						})), b = m.valHooks[this.type] || m.valHooks[this.nodeName.toLowerCase()], b && "set" in b && void 0 !==
						b.set(this, e, "value") || (this.value = e))
				});
				if (e) return b = m.valHooks[e.type] || m.valHooks[e.nodeName.toLowerCase()], b && "get" in b && void 0 !== (c =
					b.get(e, "value")) ? c : (c = e.value, "string" == typeof c ? c.replace(lb, "") : null == c ? "" : c)
			}
		}
	}), m.extend({
		valHooks: {
			option: {
				get: function(a) {
					var b = m.find.attr(a, "value");
					return null != b ? b : m.trim(m.text(a))
				}
			},
			select: {
				get: function(a) {
					for (var b, c, d = a.options, e = a.selectedIndex, f = "select-one" === a.type || 0 > e, g = f ? null : [], h =
							f ? e + 1 : d.length, i = 0 > e ? h : f ? e : 0; h > i; i++)
						if (c = d[i], !(!c.selected && i !== e || (k.optDisabled ? c.disabled : null !== c.getAttribute("disabled")) ||
								c.parentNode.disabled && m.nodeName(c.parentNode, "optgroup"))) {
							if (b = m(c).val(), f) return b;
							g.push(b)
						} return g
				},
				set: function(a, b) {
					var c, d, e = a.options,
						f = m.makeArray(b),
						g = e.length;
					while (g--)
						if (d = e[g], m.inArray(m.valHooks.option.get(d), f) >= 0) try {
							d.selected = c = !0
						} catch (h) {
							d.scrollHeight
						} else d.selected = !1;
					return c || (a.selectedIndex = -1), e
				}
			}
		}
	}), m.each(["radio", "checkbox"], function() {
		m.valHooks[this] = {
			set: function(a, b) {
				return m.isArray(b) ? a.checked = m.inArray(m(a).val(), b) >= 0 : void 0
			}
		}, k.checkOn || (m.valHooks[this].get = function(a) {
			return null === a.getAttribute("value") ? "on" : a.value
		})
	});
	var mb, nb, ob = m.expr.attrHandle,
		pb = /^(?:checked|selected)$/i,
		qb = k.getSetAttribute,
		rb = k.input;
	m.fn.extend({
		attr: function(a, b) {
			return V(this, m.attr, a, b, arguments.length > 1)
		},
		removeAttr: function(a) {
			return this.each(function() {
				m.removeAttr(this, a)
			})
		}
	}), m.extend({
		attr: function(a, b, c) {
			var d, e, f = a.nodeType;
			if (a && 3 !== f && 8 !== f && 2 !== f) return typeof a.getAttribute === K ? m.prop(a, b, c) : (1 === f && m.isXMLDoc(
					a) || (b = b.toLowerCase(), d = m.attrHooks[b] || (m.expr.match.bool.test(b) ? nb : mb)), void 0 === c ? d &&
				"get" in d && null !== (e = d.get(a, b)) ? e : (e = m.find.attr(a, b), null == e ? void 0 : e) : null !== c ?
				d && "set" in d && void 0 !== (e = d.set(a, c, b)) ? e : (a.setAttribute(b, c + ""), c) : void m.removeAttr(a,
					b))
		},
		removeAttr: function(a, b) {
			var c, d, e = 0,
				f = b && b.match(E);
			if (f && 1 === a.nodeType)
				while (c = f[e++]) d = m.propFix[c] || c, m.expr.match.bool.test(c) ? rb && qb || !pb.test(c) ? a[d] = !1 : a[m
					.camelCase("default-" + c)] = a[d] = !1 : m.attr(a, c, ""), a.removeAttribute(qb ? c : d)
		},
		attrHooks: {
			type: {
				set: function(a, b) {
					if (!k.radioValue && "radio" === b && m.nodeName(a, "input")) {
						var c = a.value;
						return a.setAttribute("type", b), c && (a.value = c), b
					}
				}
			}
		}
	}), nb = {
		set: function(a, b, c) {
			return b === !1 ? m.removeAttr(a, c) : rb && qb || !pb.test(c) ? a.setAttribute(!qb && m.propFix[c] || c, c) : a[
				m.camelCase("default-" + c)] = a[c] = !0, c
		}
	}, m.each(m.expr.match.bool.source.match(/\w+/g), function(a, b) {
		var c = ob[b] || m.find.attr;
		ob[b] = rb && qb || !pb.test(b) ? function(a, b, d) {
			var e, f;
			return d || (f = ob[b], ob[b] = e, e = null != c(a, b, d) ? b.toLowerCase() : null, ob[b] = f), e
		} : function(a, b, c) {
			return c ? void 0 : a[m.camelCase("default-" + b)] ? b.toLowerCase() : null
		}
	}), rb && qb || (m.attrHooks.value = {
		set: function(a, b, c) {
			return m.nodeName(a, "input") ? void(a.defaultValue = b) : mb && mb.set(a, b, c)
		}
	}), qb || (mb = {
		set: function(a, b, c) {
			var d = a.getAttributeNode(c);
			return d || a.setAttributeNode(d = a.ownerDocument.createAttribute(c)), d.value = b += "", "value" === c || b ===
				a.getAttribute(c) ? b : void 0
		}
	}, ob.id = ob.name = ob.coords = function(a, b, c) {
		var d;
		return c ? void 0 : (d = a.getAttributeNode(b)) && "" !== d.value ? d.value : null
	}, m.valHooks.button = {
		get: function(a, b) {
			var c = a.getAttributeNode(b);
			return c && c.specified ? c.value : void 0
		},
		set: mb.set
	}, m.attrHooks.contenteditable = {
		set: function(a, b, c) {
			mb.set(a, "" === b ? !1 : b, c)
		}
	}, m.each(["width", "height"], function(a, b) {
		m.attrHooks[b] = {
			set: function(a, c) {
				return "" === c ? (a.setAttribute(b, "auto"), c) : void 0
			}
		}
	})), k.style || (m.attrHooks.style = {
		get: function(a) {
			return a.style.cssText || void 0
		},
		set: function(a, b) {
			return a.style.cssText = b + ""
		}
	});
	var sb = /^(?:input|select|textarea|button|object)$/i,
		tb = /^(?:a|area)$/i;
	m.fn.extend({
		prop: function(a, b) {
			return V(this, m.prop, a, b, arguments.length > 1)
		},
		removeProp: function(a) {
			return a = m.propFix[a] || a, this.each(function() {
				try {
					this[a] = void 0, delete this[a]
				} catch (b) {}
			})
		}
	}), m.extend({
		propFix: {
			"for": "htmlFor",
			"class": "className"
		},
		prop: function(a, b, c) {
			var d, e, f, g = a.nodeType;
			if (a && 3 !== g && 8 !== g && 2 !== g) return f = 1 !== g || !m.isXMLDoc(a), f && (b = m.propFix[b] || b, e = m
					.propHooks[b]), void 0 !== c ? e && "set" in e && void 0 !== (d = e.set(a, c, b)) ? d : a[b] = c : e && "get" in
				e && null !== (d = e.get(a, b)) ? d : a[b]
		},
		propHooks: {
			tabIndex: {
				get: function(a) {
					var b = m.find.attr(a, "tabindex");
					return b ? parseInt(b, 10) : sb.test(a.nodeName) || tb.test(a.nodeName) && a.href ? 0 : -1
				}
			}
		}
	}), k.hrefNormalized || m.each(["href", "src"], function(a, b) {
		m.propHooks[b] = {
			get: function(a) {
				return a.getAttribute(b, 4)
			}
		}
	}), k.optSelected || (m.propHooks.selected = {
		get: function(a) {
			var b = a.parentNode;
			return b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex), null
		}
	}), m.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap",
		"frameBorder", "contentEditable"
	], function() {
		m.propFix[this.toLowerCase()] = this
	}), k.enctype || (m.propFix.enctype = "encoding");
	var ub = /[\t\r\n\f]/g;
	m.fn.extend({
		addClass: function(a) {
			var b, c, d, e, f, g, h = 0,
				i = this.length,
				j = "string" == typeof a && a;
			if (m.isFunction(a)) return this.each(function(b) {
				m(this).addClass(a.call(this, b, this.className))
			});
			if (j)
				for (b = (a || "").match(E) || []; i > h; h++)
					if (c = this[h], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(ub, " ") : " ")) {
						f = 0;
						while (e = b[f++]) d.indexOf(" " + e + " ") < 0 && (d += e + " ");
						g = m.trim(d), c.className !== g && (c.className = g)
					} return this
		},
		removeClass: function(a) {
			var b, c, d, e, f, g, h = 0,
				i = this.length,
				j = 0 === arguments.length || "string" == typeof a && a;
			if (m.isFunction(a)) return this.each(function(b) {
				m(this).removeClass(a.call(this, b, this.className))
			});
			if (j)
				for (b = (a || "").match(E) || []; i > h; h++)
					if (c = this[h], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(ub, " ") : "")) {
						f = 0;
						while (e = b[f++])
							while (d.indexOf(" " + e + " ") >= 0) d = d.replace(" " + e + " ", " ");
						g = a ? m.trim(d) : "", c.className !== g && (c.className = g)
					} return this
		},
		toggleClass: function(a, b) {
			var c = typeof a;
			return "boolean" == typeof b && "string" === c ? b ? this.addClass(a) : this.removeClass(a) : this.each(m.isFunction(
				a) ? function(c) {
				m(this).toggleClass(a.call(this, c, this.className, b), b)
			} : function() {
				if ("string" === c) {
					var b, d = 0,
						e = m(this),
						f = a.match(E) || [];
					while (b = f[d++]) e.hasClass(b) ? e.removeClass(b) : e.addClass(b)
				} else(c === K || "boolean" === c) && (this.className && m._data(this, "__className__", this.className), this
					.className = this.className || a === !1 ? "" : m._data(this, "__className__") || "")
			})
		},
		hasClass: function(a) {
			for (var b = " " + a + " ", c = 0, d = this.length; d > c; c++)
				if (1 === this[c].nodeType && (" " + this[c].className + " ").replace(ub, " ").indexOf(b) >= 0) return !0;
			return !1
		}
	}), m.each(
		"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu"
		.split(" "),
		function(a, b) {
			m.fn[b] = function(a, c) {
				return arguments.length > 0 ? this.on(b, null, a, c) : this.trigger(b)
			}
		}), m.fn.extend({
		hover: function(a, b) {
			return this.mouseenter(a).mouseleave(b || a)
		},
		bind: function(a, b, c) {
			return this.on(a, null, b, c)
		},
		unbind: function(a, b) {
			return this.off(a, null, b)
		},
		delegate: function(a, b, c, d) {
			return this.on(b, a, c, d)
		},
		undelegate: function(a, b, c) {
			return 1 === arguments.length ? this.off(a, "**") : this.off(b, a || "**", c)
		}
	});
	var vb = m.now(),
		wb = /\?/,
		xb =
		/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
	m.parseJSON = function(b) {
		if (a.JSON && a.JSON.parse) return a.JSON.parse(b + "");
		var c, d = null,
			e = m.trim(b + "");
		return e && !m.trim(e.replace(xb, function(a, b, e, f) {
			return c && b && (d = 0), 0 === d ? a : (c = e || b, d += !f - !e, "")
		})) ? Function("return " + e)() : m.error("Invalid JSON: " + b)
	}, m.parseXML = function(b) {
		var c, d;
		if (!b || "string" != typeof b) return null;
		try {
			a.DOMParser ? (d = new DOMParser, c = d.parseFromString(b, "text/xml")) : (c = new ActiveXObject(
				"Microsoft.XMLDOM"), c.async = "false", c.loadXML(b))
		} catch (e) {
			c = void 0
		}
		return c && c.documentElement && !c.getElementsByTagName("parsererror").length || m.error("Invalid XML: " + b), c
	};
	var yb, zb, Ab = /#.*$/,
		Bb = /([?&])_=[^&]*/,
		Cb = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
		Db = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
		Eb = /^(?:GET|HEAD)$/,
		Fb = /^\/\//,
		Gb = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
		Hb = {},
		Ib = {},
		Jb = "*/".concat("*");
	try {
		zb = location.href
	} catch (Kb) {
		zb = y.createElement("a"), zb.href = "", zb = zb.href
	}
	yb = Gb.exec(zb.toLowerCase()) || [];

	function Lb(a) {
		return function(b, c) {
			"string" != typeof b && (c = b, b = "*");
			var d, e = 0,
				f = b.toLowerCase().match(E) || [];
			if (m.isFunction(c))
				while (d = f[e++]) "+" === d.charAt(0) ? (d = d.slice(1) || "*", (a[d] = a[d] || []).unshift(c)) : (a[d] = a[d] ||
					[]).push(c)
		}
	}

	function Mb(a, b, c, d) {
		var e = {},
			f = a === Ib;

		function g(h) {
			var i;
			return e[h] = !0, m.each(a[h] || [], function(a, h) {
				var j = h(b, c, d);
				return "string" != typeof j || f || e[j] ? f ? !(i = j) : void 0 : (b.dataTypes.unshift(j), g(j), !1)
			}), i
		}
		return g(b.dataTypes[0]) || !e["*"] && g("*")
	}

	function Nb(a, b) {
		var c, d, e = m.ajaxSettings.flatOptions || {};
		for (d in b) void 0 !== b[d] && ((e[d] ? a : c || (c = {}))[d] = b[d]);
		return c && m.extend(!0, a, c), a
	}

	function Ob(a, b, c) {
		var d, e, f, g, h = a.contents,
			i = a.dataTypes;
		while ("*" === i[0]) i.shift(), void 0 === e && (e = a.mimeType || b.getResponseHeader("Content-Type"));
		if (e)
			for (g in h)
				if (h[g] && h[g].test(e)) {
					i.unshift(g);
					break
				} if (i[0] in c) f = i[0];
		else {
			for (g in c) {
				if (!i[0] || a.converters[g + " " + i[0]]) {
					f = g;
					break
				}
				d || (d = g)
			}
			f = f || d
		}
		return f ? (f !== i[0] && i.unshift(f), c[f]) : void 0
	}

	function Pb(a, b, c, d) {
		var e, f, g, h, i, j = {},
			k = a.dataTypes.slice();
		if (k[1])
			for (g in a.converters) j[g.toLowerCase()] = a.converters[g];
		f = k.shift();
		while (f)
			if (a.responseFields[f] && (c[a.responseFields[f]] = b), !i && d && a.dataFilter && (b = a.dataFilter(b, a.dataType)),
				i = f, f = k.shift())
				if ("*" === f) f = i;
				else if ("*" !== i && i !== f) {
			if (g = j[i + " " + f] || j["* " + f], !g)
				for (e in j)
					if (h = e.split(" "), h[1] === f && (g = j[i + " " + h[0]] || j["* " + h[0]])) {
						g === !0 ? g = j[e] : j[e] !== !0 && (f = h[0], k.unshift(h[1]));
						break
					} if (g !== !0)
				if (g && a["throws"]) b = g(b);
				else try {
					b = g(b)
				} catch (l) {
					return {
						state: "parsererror",
						error: g ? l : "No conversion from " + i + " to " + f
					}
				}
		}
		return {
			state: "success",
			data: b
		}
	}
	m.extend({
		active: 0,
		lastModified: {},
		etag: {},
		ajaxSettings: {
			url: zb,
			type: "GET",
			isLocal: Db.test(yb[1]),
			global: !0,
			processData: !0,
			async: !0,
			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
			accepts: {
				"*": Jb,
				text: "text/plain",
				html: "text/html",
				xml: "application/xml, text/xml",
				json: "application/json, text/javascript"
			},
			contents: {
				xml: /xml/,
				html: /html/,
				json: /json/
			},
			responseFields: {
				xml: "responseXML",
				text: "responseText",
				json: "responseJSON"
			},
			converters: {
				"* text": String,
				"text html": !0,
				"text json": m.parseJSON,
				"text xml": m.parseXML
			},
			flatOptions: {
				url: !0,
				context: !0
			}
		},
		ajaxSetup: function(a, b) {
			return b ? Nb(Nb(a, m.ajaxSettings), b) : Nb(m.ajaxSettings, a)
		},
		ajaxPrefilter: Lb(Hb),
		ajaxTransport: Lb(Ib),
		ajax: function(a, b) {
			"object" == typeof a && (b = a, a = void 0), b = b || {};
			var c, d, e, f, g, h, i, j, k = m.ajaxSetup({}, b),
				l = k.context || k,
				n = k.context && (l.nodeType || l.jquery) ? m(l) : m.event,
				o = m.Deferred(),
				p = m.Callbacks("once memory"),
				q = k.statusCode || {},
				r = {},
				s = {},
				t = 0,
				u = "canceled",
				v = {
					readyState: 0,
					getResponseHeader: function(a) {
						var b;
						if (2 === t) {
							if (!j) {
								j = {};
								while (b = Cb.exec(f)) j[b[1].toLowerCase()] = b[2]
							}
							b = j[a.toLowerCase()]
						}
						return null == b ? null : b
					},
					getAllResponseHeaders: function() {
						return 2 === t ? f : null
					},
					setRequestHeader: function(a, b) {
						var c = a.toLowerCase();
						return t || (a = s[c] = s[c] || a, r[a] = b), this
					},
					overrideMimeType: function(a) {
						return t || (k.mimeType = a), this
					},
					statusCode: function(a) {
						var b;
						if (a)
							if (2 > t)
								for (b in a) q[b] = [q[b], a[b]];
							else v.always(a[v.status]);
						return this
					},
					abort: function(a) {
						var b = a || u;
						return i && i.abort(b), x(0, b), this
					}
				};
			if (o.promise(v).complete = p.add, v.success = v.done, v.error = v.fail, k.url = ((a || k.url || zb) + "").replace(
					Ab, "").replace(Fb, yb[1] + "//"), k.type = b.method || b.type || k.method || k.type, k.dataTypes = m.trim(k.dataType ||
					"*").toLowerCase().match(E) || [""], null == k.crossDomain && (c = Gb.exec(k.url.toLowerCase()), k.crossDomain = !
					(!c || c[1] === yb[1] && c[2] === yb[2] && (c[3] || ("http:" === c[1] ? "80" : "443")) === (yb[3] || ("http:" ===
						yb[1] ? "80" : "443")))), k.data && k.processData && "string" != typeof k.data && (k.data = m.param(k.data, k
					.traditional)), Mb(Hb, k, b, v), 2 === t) return v;
			h = m.event && k.global, h && 0 === m.active++ && m.event.trigger("ajaxStart"), k.type = k.type.toUpperCase(), k
				.hasContent = !Eb.test(k.type), e = k.url, k.hasContent || (k.data && (e = k.url += (wb.test(e) ? "&" : "?") +
					k.data, delete k.data), k.cache === !1 && (k.url = Bb.test(e) ? e.replace(Bb, "$1_=" + vb++) : e + (wb.test(e) ?
					"&" : "?") + "_=" + vb++)), k.ifModified && (m.lastModified[e] && v.setRequestHeader("If-Modified-Since", m.lastModified[
					e]), m.etag[e] && v.setRequestHeader("If-None-Match", m.etag[e])), (k.data && k.hasContent && k.contentType !==
					!1 || b.contentType) && v.setRequestHeader("Content-Type", k.contentType), v.setRequestHeader("Accept", k.dataTypes[
					0] && k.accepts[k.dataTypes[0]] ? k.accepts[k.dataTypes[0]] + ("*" !== k.dataTypes[0] ? ", " + Jb +
					"; q=0.01" : "") : k.accepts["*"]);
			for (d in k.headers) v.setRequestHeader(d, k.headers[d]);
			if (k.beforeSend && (k.beforeSend.call(l, v, k) === !1 || 2 === t)) return v.abort();
			u = "abort";
			for (d in {
					success: 1,
					error: 1,
					complete: 1
				}) v[d](k[d]);
			if (i = Mb(Ib, k, b, v)) {
				v.readyState = 1, h && n.trigger("ajaxSend", [v, k]), k.async && k.timeout > 0 && (g = setTimeout(function() {
					v.abort("timeout")
				}, k.timeout));
				try {
					t = 1, i.send(r, x)
				} catch (w) {
					if (!(2 > t)) throw w;
					x(-1, w)
				}
			} else x(-1, "No Transport");

			function x(a, b, c, d) {
				var j, r, s, u, w, x = b;
				2 !== t && (t = 2, g && clearTimeout(g), i = void 0, f = d || "", v.readyState = a > 0 ? 4 : 0, j = a >= 200 &&
					300 > a || 304 === a, c && (u = Ob(k, v, c)), u = Pb(k, u, v, j), j ? (k.ifModified && (w = v.getResponseHeader(
							"Last-Modified"), w && (m.lastModified[e] = w), w = v.getResponseHeader("etag"), w && (m.etag[e] = w)), 204 ===
						a || "HEAD" === k.type ? x = "nocontent" : 304 === a ? x = "notmodified" : (x = u.state, r = u.data, s = u.error,
							j = !s)) : (s = x, (a || !x) && (x = "error", 0 > a && (a = 0))), v.status = a, v.statusText = (b || x) +
					"", j ? o.resolveWith(l, [r, x, v]) : o.rejectWith(l, [v, x, s]), v.statusCode(q), q = void 0, h && n.trigger(
						j ? "ajaxSuccess" : "ajaxError", [v, k, j ? r : s]), p.fireWith(l, [v, x]), h && (n.trigger("ajaxComplete",
						[v, k]), --m.active || m.event.trigger("ajaxStop")))
			}
			return v
		},
		getJSON: function(a, b, c) {
			return m.get(a, b, c, "json")
		},
		getScript: function(a, b) {
			return m.get(a, void 0, b, "script")
		}
	}), m.each(["get", "post"], function(a, b) {
		m[b] = function(a, c, d, e) {
			return m.isFunction(c) && (e = e || d, d = c, c = void 0), m.ajax({
				url: a,
				type: b,
				dataType: e,
				data: c,
				success: d
			})
		}
	}), m._evalUrl = function(a) {
		return m.ajax({
			url: a,
			type: "GET",
			dataType: "script",
			async: !1,
			global: !1,
			"throws": !0
		})
	}, m.fn.extend({
		wrapAll: function(a) {
			if (m.isFunction(a)) return this.each(function(b) {
				m(this).wrapAll(a.call(this, b))
			});
			if (this[0]) {
				var b = m(a, this[0].ownerDocument).eq(0).clone(!0);
				this[0].parentNode && b.insertBefore(this[0]), b.map(function() {
					var a = this;
					while (a.firstChild && 1 === a.firstChild.nodeType) a = a.firstChild;
					return a
				}).append(this)
			}
			return this
		},
		wrapInner: function(a) {
			return this.each(m.isFunction(a) ? function(b) {
				m(this).wrapInner(a.call(this, b))
			} : function() {
				var b = m(this),
					c = b.contents();
				c.length ? c.wrapAll(a) : b.append(a)
			})
		},
		wrap: function(a) {
			var b = m.isFunction(a);
			return this.each(function(c) {
				m(this).wrapAll(b ? a.call(this, c) : a)
			})
		},
		unwrap: function() {
			return this.parent().each(function() {
				m.nodeName(this, "body") || m(this).replaceWith(this.childNodes)
			}).end()
		}
	}), m.expr.filters.hidden = function(a) {
		return a.offsetWidth <= 0 && a.offsetHeight <= 0 || !k.reliableHiddenOffsets() && "none" === (a.style && a.style.display ||
			m.css(a, "display"))
	}, m.expr.filters.visible = function(a) {
		return !m.expr.filters.hidden(a)
	};
	var Qb = /%20/g,
		Rb = /\[\]$/,
		Sb = /\r?\n/g,
		Tb = /^(?:submit|button|image|reset|file)$/i,
		Ub = /^(?:input|select|textarea|keygen)/i;

	function Vb(a, b, c, d) {
		var e;
		if (m.isArray(b)) m.each(b, function(b, e) {
			c || Rb.test(a) ? d(a, e) : Vb(a + "[" + ("object" == typeof e ? b : "") + "]", e, c, d)
		});
		else if (c || "object" !== m.type(b)) d(a, b);
		else
			for (e in b) Vb(a + "[" + e + "]", b[e], c, d)
	}
	m.param = function(a, b) {
		var c, d = [],
			e = function(a, b) {
				b = m.isFunction(b) ? b() : null == b ? "" : b, d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b)
			};
		if (void 0 === b && (b = m.ajaxSettings && m.ajaxSettings.traditional), m.isArray(a) || a.jquery && !m.isPlainObject(
				a)) m.each(a, function() {
			e(this.name, this.value)
		});
		else
			for (c in a) Vb(c, a[c], b, e);
		return d.join("&").replace(Qb, "+")
	}, m.fn.extend({
		serialize: function() {
			return m.param(this.serializeArray())
		},
		serializeArray: function() {
			return this.map(function() {
				var a = m.prop(this, "elements");
				return a ? m.makeArray(a) : this
			}).filter(function() {
				var a = this.type;
				return this.name && !m(this).is(":disabled") && Ub.test(this.nodeName) && !Tb.test(a) && (this.checked || !W.test(
					a))
			}).map(function(a, b) {
				var c = m(this).val();
				return null == c ? null : m.isArray(c) ? m.map(c, function(a) {
					return {
						name: b.name,
						value: a.replace(Sb, "\r\n")
					}
				}) : {
					name: b.name,
					value: c.replace(Sb, "\r\n")
				}
			}).get()
		}
	}), m.ajaxSettings.xhr = void 0 !== a.ActiveXObject ? function() {
		return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && Zb() || $b()
	} : Zb;
	var Wb = 0,
		Xb = {},
		Yb = m.ajaxSettings.xhr();
	a.attachEvent && a.attachEvent("onunload", function() {
		for (var a in Xb) Xb[a](void 0, !0)
	}), k.cors = !!Yb && "withCredentials" in Yb, Yb = k.ajax = !!Yb, Yb && m.ajaxTransport(function(a) {
		if (!a.crossDomain || k.cors) {
			var b;
			return {
				send: function(c, d) {
					var e, f = a.xhr(),
						g = ++Wb;
					if (f.open(a.type, a.url, a.async, a.username, a.password), a.xhrFields)
						for (e in a.xhrFields) f[e] = a.xhrFields[e];
					a.mimeType && f.overrideMimeType && f.overrideMimeType(a.mimeType), a.crossDomain || c["X-Requested-With"] ||
						(c["X-Requested-With"] = "XMLHttpRequest");
					for (e in c) void 0 !== c[e] && f.setRequestHeader(e, c[e] + "");
					f.send(a.hasContent && a.data || null), b = function(c, e) {
						var h, i, j;
						if (b && (e || 4 === f.readyState))
							if (delete Xb[g], b = void 0, f.onreadystatechange = m.noop, e) 4 !== f.readyState && f.abort();
							else {
								j = {}, h = f.status, "string" == typeof f.responseText && (j.text = f.responseText);
								try {
									i = f.statusText
								} catch (k) {
									i = ""
								}
								h || !a.isLocal || a.crossDomain ? 1223 === h && (h = 204) : h = j.text ? 200 : 404
							} j && d(h, i, j, f.getAllResponseHeaders())
					}, a.async ? 4 === f.readyState ? setTimeout(b) : f.onreadystatechange = Xb[g] = b : b()
				},
				abort: function() {
					b && b(void 0, !0)
				}
			}
		}
	});

	function Zb() {
		try {
			return new a.XMLHttpRequest
		} catch (b) {}
	}

	function $b() {
		try {
			return new a.ActiveXObject("Microsoft.XMLHTTP")
		} catch (b) {}
	}
	m.ajaxSetup({
		accepts: {
			script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
		},
		contents: {
			script: /(?:java|ecma)script/
		},
		converters: {
			"text script": function(a) {
				return m.globalEval(a), a
			}
		}
	}), m.ajaxPrefilter("script", function(a) {
		void 0 === a.cache && (a.cache = !1), a.crossDomain && (a.type = "GET", a.global = !1)
	}), m.ajaxTransport("script", function(a) {
		if (a.crossDomain) {
			var b, c = y.head || m("head")[0] || y.documentElement;
			return {
				send: function(d, e) {
					b = y.createElement("script"), b.async = !0, a.scriptCharset && (b.charset = a.scriptCharset), b.src = a.url,
						b.onload = b.onreadystatechange = function(a, c) {
							(c || !b.readyState || /loaded|complete/.test(b.readyState)) && (b.onload = b.onreadystatechange = null, b.parentNode &&
								b.parentNode.removeChild(b), b = null, c || e(200, "success"))
						}, c.insertBefore(b, c.firstChild)
				},
				abort: function() {
					b && b.onload(void 0, !0)
				}
			}
		}
	});
	var _b = [],
		ac = /(=)\?(?=&|$)|\?\?/;
	m.ajaxSetup({
		jsonp: "callback",
		jsonpCallback: function() {
			var a = _b.pop() || m.expando + "_" + vb++;
			return this[a] = !0, a
		}
	}), m.ajaxPrefilter("json jsonp", function(b, c, d) {
		var e, f, g, h = b.jsonp !== !1 && (ac.test(b.url) ? "url" : "string" == typeof b.data && !(b.contentType || "").indexOf(
			"application/x-www-form-urlencoded") && ac.test(b.data) && "data");
		return h || "jsonp" === b.dataTypes[0] ? (e = b.jsonpCallback = m.isFunction(b.jsonpCallback) ? b.jsonpCallback() :
			b.jsonpCallback, h ? b[h] = b[h].replace(ac, "$1" + e) : b.jsonp !== !1 && (b.url += (wb.test(b.url) ? "&" : "?") +
				b.jsonp + "=" + e), b.converters["script json"] = function() {
				return g || m.error(e + " was not called"), g[0]
			}, b.dataTypes[0] = "json", f = a[e], a[e] = function() {
				g = arguments
			}, d.always(function() {
				a[e] = f, b[e] && (b.jsonpCallback = c.jsonpCallback, _b.push(e)), g && m.isFunction(f) && f(g[0]), g = f =
					void 0
			}), "script") : void 0
	}), m.parseHTML = function(a, b, c) {
		if (!a || "string" != typeof a) return null;
		"boolean" == typeof b && (c = b, b = !1), b = b || y;
		var d = u.exec(a),
			e = !c && [];
		return d ? [b.createElement(d[1])] : (d = m.buildFragment([a], b, e), e && e.length && m(e).remove(), m.merge([], d
			.childNodes))
	};
	var bc = m.fn.load;
	m.fn.load = function(a, b, c) {
		if ("string" != typeof a && bc) return bc.apply(this, arguments);
		var d, e, f, g = this,
			h = a.indexOf(" ");
		return h >= 0 && (d = m.trim(a.slice(h, a.length)), a = a.slice(0, h)), m.isFunction(b) ? (c = b, b = void 0) : b &&
			"object" == typeof b && (f = "POST"), g.length > 0 && m.ajax({
				url: a,
				type: f,
				dataType: "html",
				data: b
			}).done(function(a) {
				e = arguments, g.html(d ? m("<div>").append(m.parseHTML(a)).find(d) : a)
			}).complete(c && function(a, b) {
				g.each(c, e || [a.responseText, b, a])
			}), this
	}, m.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(a, b) {
		m.fn[b] = function(a) {
			return this.on(b, a)
		}
	}), m.expr.filters.animated = function(a) {
		return m.grep(m.timers, function(b) {
			return a === b.elem
		}).length
	};
	var cc = a.document.documentElement;

	function dc(a) {
		return m.isWindow(a) ? a : 9 === a.nodeType ? a.defaultView || a.parentWindow : !1
	}
	m.offset = {
		setOffset: function(a, b, c) {
			var d, e, f, g, h, i, j, k = m.css(a, "position"),
				l = m(a),
				n = {};
			"static" === k && (a.style.position = "relative"), h = l.offset(), f = m.css(a, "top"), i = m.css(a, "left"), j =
				("absolute" === k || "fixed" === k) && m.inArray("auto", [f, i]) > -1, j ? (d = l.position(), g = d.top, e = d.left) :
				(g = parseFloat(f) || 0, e = parseFloat(i) || 0), m.isFunction(b) && (b = b.call(a, c, h)), null != b.top && (n.top =
					b.top - h.top + g), null != b.left && (n.left = b.left - h.left + e), "using" in b ? b.using.call(a, n) : l.css(
					n)
		}
	}, m.fn.extend({
		offset: function(a) {
			if (arguments.length) return void 0 === a ? this : this.each(function(b) {
				m.offset.setOffset(this, a, b)
			});
			var b, c, d = {
					top: 0,
					left: 0
				},
				e = this[0],
				f = e && e.ownerDocument;
			if (f) return b = f.documentElement, m.contains(b, e) ? (typeof e.getBoundingClientRect !== K && (d = e.getBoundingClientRect()),
				c = dc(f), {
					top: d.top + (c.pageYOffset || b.scrollTop) - (b.clientTop || 0),
					left: d.left + (c.pageXOffset || b.scrollLeft) - (b.clientLeft || 0)
				}) : d
		},
		position: function() {
			if (this[0]) {
				var a, b, c = {
						top: 0,
						left: 0
					},
					d = this[0];
				return "fixed" === m.css(d, "position") ? b = d.getBoundingClientRect() : (a = this.offsetParent(), b = this.offset(),
					m.nodeName(a[0], "html") || (c = a.offset()), c.top += m.css(a[0], "borderTopWidth", !0), c.left += m.css(a[0],
						"borderLeftWidth", !0)), {
					top: b.top - c.top - m.css(d, "marginTop", !0),
					left: b.left - c.left - m.css(d, "marginLeft", !0)
				}
			}
		},
		offsetParent: function() {
			return this.map(function() {
				var a = this.offsetParent || cc;
				while (a && !m.nodeName(a, "html") && "static" === m.css(a, "position")) a = a.offsetParent;
				return a || cc
			})
		}
	}), m.each({
		scrollLeft: "pageXOffset",
		scrollTop: "pageYOffset"
	}, function(a, b) {
		var c = /Y/.test(b);
		m.fn[a] = function(d) {
			return V(this, function(a, d, e) {
				var f = dc(a);
				return void 0 === e ? f ? b in f ? f[b] : f.document.documentElement[d] : a[d] : void(f ? f.scrollTo(c ? m(f)
					.scrollLeft() : e, c ? e : m(f).scrollTop()) : a[d] = e)
			}, a, d, arguments.length, null)
		}
	}), m.each(["top", "left"], function(a, b) {
		m.cssHooks[b] = La(k.pixelPosition, function(a, c) {
			return c ? (c = Ja(a, b), Ha.test(c) ? m(a).position()[b] + "px" : c) : void 0
		})
	}), m.each({
		Height: "height",
		Width: "width"
	}, function(a, b) {
		m.each({
			padding: "inner" + a,
			content: b,
			"": "outer" + a
		}, function(c, d) {
			m.fn[d] = function(d, e) {
				var f = arguments.length && (c || "boolean" != typeof d),
					g = c || (d === !0 || e === !0 ? "margin" : "border");
				return V(this, function(b, c, d) {
					var e;
					return m.isWindow(b) ? b.document.documentElement["client" + a] : 9 === b.nodeType ? (e = b.documentElement,
							Math.max(b.body["scroll" + a], e["scroll" + a], b.body["offset" + a], e["offset" + a], e["client" + a])) :
						void 0 === d ? m.css(b, c, g) : m.style(b, c, d, g)
				}, b, f ? d : void 0, f, null)
			}
		})
	}), m.fn.size = function() {
		return this.length
	}, m.fn.andSelf = m.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function() {
		return m
	});
	var ec = a.jQuery,
		fc = a.$;
	return m.noConflict = function(b) {
		return a.$ === m && (a.$ = fc), b && a.jQuery === m && (a.jQuery = ec), m
	}, typeof b === K && (a.jQuery = a.$ = m), m
});
//# sourceMappingURL=jquery.min.map
/*bootstrap.min.js*/
/*!
 * Bootstrap v3.3.6 (http://getbootstrap.com)
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under the MIT license
 */
if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery"); + function(a) {
	"use strict";
	var b = a.fn.jquery.split(" ")[0].split(".");
	if (b[0] < 2 && b[1] < 9 || 1 == b[0] && 9 == b[1] && b[2] < 1 || b[0] > 2) throw new Error(
		"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")
}(jQuery), + function(a) {
	"use strict";

	function b() {
		var a = document.createElement("bootstrap"),
			b = {
				WebkitTransition: "webkitTransitionEnd",
				MozTransition: "transitionend",
				OTransition: "oTransitionEnd otransitionend",
				transition: "transitionend"
			};
		for (var c in b)
			if (void 0 !== a.style[c]) return {
				end: b[c]
			};
		return !1
	}
	a.fn.emulateTransitionEnd = function(b) {
		var c = !1,
			d = this;
		a(this).one("bsTransitionEnd", function() {
			c = !0
		});
		var e = function() {
			c || a(d).trigger(a.support.transition.end)
		};
		return setTimeout(e, b), this
	}, a(function() {
		a.support.transition = b(), a.support.transition && (a.event.special.bsTransitionEnd = {
			bindType: a.support.transition.end,
			delegateType: a.support.transition.end,
			handle: function(b) {
				return a(b.target).is(this) ? b.handleObj.handler.apply(this, arguments) : void 0
			}
		})
	})
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		return this.each(function() {
			var c = a(this),
				e = c.data("bs.alert");
			e || c.data("bs.alert", e = new d(this)), "string" == typeof b && e[b].call(c)
		})
	}
	var c = '[data-dismiss="alert"]',
		d = function(b) {
			a(b).on("click", c, this.close)
		};
	d.VERSION = "3.3.6", d.TRANSITION_DURATION = 150, d.prototype.close = function(b) {
		function c() {
			g.detach().trigger("closed.bs.alert").remove()
		}
		var e = a(this),
			f = e.attr("data-target");
		f || (f = e.attr("href"), f = f && f.replace(/.*(?=#[^\s]*$)/, ""));
		var g = a(f);
		b && b.preventDefault(), g.length || (g = e.closest(".alert")), g.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() ||
			(g.removeClass("in"), a.support.transition && g.hasClass("fade") ? g.one("bsTransitionEnd", c).emulateTransitionEnd(
				d.TRANSITION_DURATION) : c())
	};
	var e = a.fn.alert;
	a.fn.alert = b, a.fn.alert.Constructor = d, a.fn.alert.noConflict = function() {
		return a.fn.alert = e, this
	}, a(document).on("click.bs.alert.data-api", c, d.prototype.close)
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		return this.each(function() {
			var d = a(this),
				e = d.data("bs.button"),
				f = "object" == typeof b && b;
			e || d.data("bs.button", e = new c(this, f)), "toggle" == b ? e.toggle() : b && e.setState(b)
		})
	}
	var c = function(b, d) {
		this.$element = a(b), this.options = a.extend({}, c.DEFAULTS, d), this.isLoading = !1
	};
	c.VERSION = "3.3.6", c.DEFAULTS = {
		loadingText: "loading..."
	}, c.prototype.setState = function(b) {
		var c = "disabled",
			d = this.$element,
			e = d.is("input") ? "val" : "html",
			f = d.data();
		b += "Text", null == f.resetText && d.data("resetText", d[e]()), setTimeout(a.proxy(function() {
			d[e](null == f[b] ? this.options[b] : f[b]), "loadingText" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c)) :
				this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c))
		}, this), 0)
	}, c.prototype.toggle = function() {
		var a = !0,
			b = this.$element.closest('[data-toggle="buttons"]');
		if (b.length) {
			var c = this.$element.find("input");
			"radio" == c.prop("type") ? (c.prop("checked") && (a = !1), b.find(".active").removeClass("active"), this.$element.addClass(
				"active")) : "checkbox" == c.prop("type") && (c.prop("checked") !== this.$element.hasClass("active") && (a = !1),
				this.$element.toggleClass("active")), c.prop("checked", this.$element.hasClass("active")), a && c.trigger(
				"change")
		} else this.$element.attr("aria-pressed", !this.$element.hasClass("active")), this.$element.toggleClass("active")
	};
	var d = a.fn.button;
	a.fn.button = b, a.fn.button.Constructor = c, a.fn.button.noConflict = function() {
		return a.fn.button = d, this
	}, a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(c) {
		var d = a(c.target);
		d.hasClass("btn") || (d = d.closest(".btn")), b.call(d, "toggle"), a(c.target).is('input[type="radio"]') || a(c.target)
			.is('input[type="checkbox"]') || c.preventDefault()
	}).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function(b) {
		a(b.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(b.type))
	})
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		return this.each(function() {
			var d = a(this),
				e = d.data("bs.carousel"),
				f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b),
				g = "string" == typeof b ? b : f.slide;
			e || d.data("bs.carousel", e = new c(this, f)), "number" == typeof b ? e.to(b) : g ? e[g]() : f.interval && e.pause()
				.cycle()
		})
	}
	var c = function(b, c) {
		this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused =
			null, this.sliding = null, this.interval = null, this.$active = null, this.$items = null, this.options.keyboard &&
			this.$element.on("keydown.bs.carousel", a.proxy(this.keydown, this)), "hover" == this.options.pause && !(
				"ontouchstart" in document.documentElement) && this.$element.on("mouseenter.bs.carousel", a.proxy(this.pause, this))
			.on("mouseleave.bs.carousel", a.proxy(this.cycle, this))
	};
	c.VERSION = "3.3.6", c.TRANSITION_DURATION = 600, c.DEFAULTS = {
		interval: 5e3,
		pause: "hover",
		wrap: !0,
		keyboard: !0
	}, c.prototype.keydown = function(a) {
		if (!/input|textarea/i.test(a.target.tagName)) {
			switch (a.which) {
				case 37:
					this.prev();
					break;
				case 39:
					this.next();
					break;
				default:
					return
			}
			a.preventDefault()
		}
	}, c.prototype.cycle = function(b) {
		return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused &&
			(this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
	}, c.prototype.getItemIndex = function(a) {
		return this.$items = a.parent().children(".item"), this.$items.index(a || this.$active)
	}, c.prototype.getItemForDirection = function(a, b) {
		var c = this.getItemIndex(b),
			d = "prev" == a && 0 === c || "next" == a && c == this.$items.length - 1;
		if (d && !this.options.wrap) return b;
		var e = "prev" == a ? -1 : 1,
			f = (c + e) % this.$items.length;
		return this.$items.eq(f)
	}, c.prototype.to = function(a) {
		var b = this,
			c = this.getItemIndex(this.$active = this.$element.find(".item.active"));
		return a > this.$items.length - 1 || 0 > a ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function() {
			b.to(a)
		}) : c == a ? this.pause().cycle() : this.slide(a > c ? "next" : "prev", this.$items.eq(a))
	}, c.prototype.pause = function(b) {
		return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(
			a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
	}, c.prototype.next = function() {
		return this.sliding ? void 0 : this.slide("next")
	}, c.prototype.prev = function() {
		return this.sliding ? void 0 : this.slide("prev")
	}, c.prototype.slide = function(b, d) {
		var e = this.$element.find(".item.active"),
			f = d || this.getItemForDirection(b, e),
			g = this.interval,
			h = "next" == b ? "left" : "right",
			i = this;
		if (f.hasClass("active")) return this.sliding = !1;
		var j = f[0],
			k = a.Event("slide.bs.carousel", {
				relatedTarget: j,
				direction: h
			});
		if (this.$element.trigger(k), !k.isDefaultPrevented()) {
			if (this.sliding = !0, g && this.pause(), this.$indicators.length) {
				this.$indicators.find(".active").removeClass("active");
				var l = a(this.$indicators.children()[this.getItemIndex(f)]);
				l && l.addClass("active")
			}
			var m = a.Event("slid.bs.carousel", {
				relatedTarget: j,
				direction: h
			});
			return a.support.transition && this.$element.hasClass("slide") ? (f.addClass(b), f[0].offsetWidth, e.addClass(h), f
				.addClass(h), e.one("bsTransitionEnd", function() {
					f.removeClass([b, h].join(" ")).addClass("active"), e.removeClass(["active", h].join(" ")), i.sliding = !1,
						setTimeout(function() {
							i.$element.trigger(m)
						}, 0)
				}).emulateTransitionEnd(c.TRANSITION_DURATION)) : (e.removeClass("active"), f.addClass("active"), this.sliding = !
				1, this.$element.trigger(m)), g && this.cycle(), this
		}
	};
	var d = a.fn.carousel;
	a.fn.carousel = b, a.fn.carousel.Constructor = c, a.fn.carousel.noConflict = function() {
		return a.fn.carousel = d, this
	};
	var e = function(c) {
		var d, e = a(this),
			f = a(e.attr("data-target") || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, ""));
		if (f.hasClass("carousel")) {
			var g = a.extend({}, f.data(), e.data()),
				h = e.attr("data-slide-to");
			h && (g.interval = !1), b.call(f, g), h && f.data("bs.carousel").to(h), c.preventDefault()
		}
	};
	a(document).on("click.bs.carousel.data-api", "[data-slide]", e).on("click.bs.carousel.data-api", "[data-slide-to]", e),
		a(window).on("load", function() {
			a('[data-ride="carousel"]').each(function() {
				var c = a(this);
				b.call(c, c.data())
			})
		})
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		var c, d = b.attr("data-target") || (c = b.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "");
		return a(d)
	}

	function c(b) {
		return this.each(function() {
			var c = a(this),
				e = c.data("bs.collapse"),
				f = a.extend({}, d.DEFAULTS, c.data(), "object" == typeof b && b);
			!e && f.toggle && /show|hide/.test(b) && (f.toggle = !1), e || c.data("bs.collapse", e = new d(this, f)), "string" ==
				typeof b && e[b]()
		})
	}
	var d = function(b, c) {
		this.$element = a(b), this.options = a.extend({}, d.DEFAULTS, c), this.$trigger = a(
				'[data-toggle="collapse"][href="#' + b.id + '"],[data-toggle="collapse"][data-target="#' + b.id + '"]'), this.transitioning =
			null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger),
			this.options.toggle && this.toggle()
	};
	d.VERSION = "3.3.6", d.TRANSITION_DURATION = 350, d.DEFAULTS = {
		toggle: !0
	}, d.prototype.dimension = function() {
		var a = this.$element.hasClass("width");
		return a ? "width" : "height"
	}, d.prototype.show = function() {
		if (!this.transitioning && !this.$element.hasClass("in")) {
			var b, e = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
			if (!(e && e.length && (b = e.data("bs.collapse"), b && b.transitioning))) {
				var f = a.Event("show.bs.collapse");
				if (this.$element.trigger(f), !f.isDefaultPrevented()) {
					e && e.length && (c.call(e, "hide"), b || e.data("bs.collapse", null));
					var g = this.dimension();
					this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded", !0), this.$trigger.removeClass(
						"collapsed").attr("aria-expanded", !0), this.transitioning = 1;
					var h = function() {
						this.$element.removeClass("collapsing").addClass("collapse in")[g](""), this.transitioning = 0, this.$element.trigger(
							"shown.bs.collapse")
					};
					if (!a.support.transition) return h.call(this);
					var i = a.camelCase(["scroll", g].join("-"));
					this.$element.one("bsTransitionEnd", a.proxy(h, this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[
						0][i])
				}
			}
		}
	}, d.prototype.hide = function() {
		if (!this.transitioning && this.$element.hasClass("in")) {
			var b = a.Event("hide.bs.collapse");
			if (this.$element.trigger(b), !b.isDefaultPrevented()) {
				var c = this.dimension();
				this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass(
						"collapse in").attr("aria-expanded", !1), this.$trigger.addClass("collapsed").attr("aria-expanded", !1), this.transitioning =
					1;
				var e = function() {
					this.transitioning = 0, this.$element.removeClass("collapsing").addClass("collapse").trigger(
						"hidden.bs.collapse")
				};
				return a.support.transition ? void this.$element[c](0).one("bsTransitionEnd", a.proxy(e, this)).emulateTransitionEnd(
					d.TRANSITION_DURATION) : e.call(this)
			}
		}
	}, d.prototype.toggle = function() {
		this[this.$element.hasClass("in") ? "hide" : "show"]()
	}, d.prototype.getParent = function() {
		return a(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(a.proxy(
			function(c, d) {
				var e = a(d);
				this.addAriaAndCollapsedClass(b(e), e)
			}, this)).end()
	}, d.prototype.addAriaAndCollapsedClass = function(a, b) {
		var c = a.hasClass("in");
		a.attr("aria-expanded", c), b.toggleClass("collapsed", !c).attr("aria-expanded", c)
	};
	var e = a.fn.collapse;
	a.fn.collapse = c, a.fn.collapse.Constructor = d, a.fn.collapse.noConflict = function() {
		return a.fn.collapse = e, this
	}, a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(d) {
		var e = a(this);
		e.attr("data-target") || d.preventDefault();
		var f = b(e),
			g = f.data("bs.collapse"),
			h = g ? "toggle" : e.data();
		c.call(f, h)
	})
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		var c = b.attr("data-target");
		c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
		var d = c && a(c);
		return d && d.length ? d : b.parent()
	}

	function c(c) {
		c && 3 === c.which || (a(e).remove(), a(f).each(function() {
			var d = a(this),
				e = b(d),
				f = {
					relatedTarget: this
				};
			e.hasClass("open") && (c && "click" == c.type && /input|textarea/i.test(c.target.tagName) && a.contains(e[0], c.target) ||
				(e.trigger(c = a.Event("hide.bs.dropdown", f)), c.isDefaultPrevented() || (d.attr("aria-expanded", "false"), e.removeClass(
					"open").trigger(a.Event("hidden.bs.dropdown", f)))))
		}))
	}

	function d(b) {
		return this.each(function() {
			var c = a(this),
				d = c.data("bs.dropdown");
			d || c.data("bs.dropdown", d = new g(this)), "string" == typeof b && d[b].call(c)
		})
	}
	var e = ".dropdown-backdrop",
		f = '[data-toggle="dropdown"]',
		g = function(b) {
			a(b).on("click.bs.dropdown", this.toggle)
		};
	g.VERSION = "3.3.6", g.prototype.toggle = function(d) {
		var e = a(this);
		if (!e.is(".disabled, :disabled")) {
			var f = b(e),
				g = f.hasClass("open");
			if (c(), !g) {
				"ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a(document.createElement("div"))
					.addClass("dropdown-backdrop").insertAfter(a(this)).on("click", c);
				var h = {
					relatedTarget: this
				};
				if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented()) return;
				e.trigger("focus").attr("aria-expanded", "true"), f.toggleClass("open").trigger(a.Event("shown.bs.dropdown", h))
			}
			return !1
		}
	}, g.prototype.keydown = function(c) {
		if (/(38|40|27|32)/.test(c.which) && !/input|textarea/i.test(c.target.tagName)) {
			var d = a(this);
			if (c.preventDefault(), c.stopPropagation(), !d.is(".disabled, :disabled")) {
				var e = b(d),
					g = e.hasClass("open");
				if (!g && 27 != c.which || g && 27 == c.which) return 27 == c.which && e.find(f).trigger("focus"), d.trigger(
					"click");
				var h = " li:not(.disabled):visible a",
					i = e.find(".dropdown-menu" + h);
				if (i.length) {
					var j = i.index(c.target);
					38 == c.which && j > 0 && j--, 40 == c.which && j < i.length - 1 && j++, ~j || (j = 0), i.eq(j).trigger("focus")
				}
			}
		}
	};
	var h = a.fn.dropdown;
	a.fn.dropdown = d, a.fn.dropdown.Constructor = g, a.fn.dropdown.noConflict = function() {
			return a.fn.dropdown = h, this
		}, a(document).on("click.bs.dropdown.data-api", c).on("click.bs.dropdown.data-api", ".dropdown form", function(a) {
			a.stopPropagation()
		}).on("click.bs.dropdown.data-api", f, g.prototype.toggle).on("keydown.bs.dropdown.data-api", f, g.prototype.keydown)
		.on("keydown.bs.dropdown.data-api", ".dropdown-menu", g.prototype.keydown)
}(jQuery), + function(a) {
	"use strict";

	function b(b, d) {
		return this.each(function() {
			var e = a(this),
				f = e.data("bs.modal"),
				g = a.extend({}, c.DEFAULTS, e.data(), "object" == typeof b && b);
			f || e.data("bs.modal", f = new c(this, g)), "string" == typeof b ? f[b](d) : g.show && f.show(d)
		})
	}
	var c = function(b, c) {
		this.options = c, this.$body = a(document.body), this.$element = a(b), this.$dialog = this.$element.find(
				".modal-dialog"), this.$backdrop = null, this.isShown = null, this.originalBodyPad = null, this.scrollbarWidth = 0,
			this.ignoreBackdropClick = !1, this.options.remote && this.$element.find(".modal-content").load(this.options.remote,
				a.proxy(function() {
					this.$element.trigger("loaded.bs.modal")
				}, this))
	};
	c.VERSION = "3.3.6", c.TRANSITION_DURATION = 300, c.BACKDROP_TRANSITION_DURATION = 150, c.DEFAULTS = {
		backdrop: !0,
		keyboard: !0,
		show: !0
	}, c.prototype.toggle = function(a) {
		return this.isShown ? this.hide() : this.show(a)
	}, c.prototype.show = function(b) {
		var d = this,
			e = a.Event("show.bs.modal", {
				relatedTarget: b
			});
		this.$element.trigger(e), this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(),
			this.$body.addClass("modal-open"), this.escape(), this.resize(), this.$element.on("click.dismiss.bs.modal",
				'[data-dismiss="modal"]', a.proxy(this.hide, this)), this.$dialog.on("mousedown.dismiss.bs.modal", function() {
				d.$element.one("mouseup.dismiss.bs.modal", function(b) {
					a(b.target).is(d.$element) && (d.ignoreBackdropClick = !0)
				})
			}), this.backdrop(function() {
				var e = a.support.transition && d.$element.hasClass("fade");
				d.$element.parent().length || d.$element.appendTo(d.$body), d.$element.show().scrollTop(0), d.adjustDialog(), e &&
					d.$element[0].offsetWidth, d.$element.addClass("in"), d.enforceFocus();
				var f = a.Event("shown.bs.modal", {
					relatedTarget: b
				});
				e ? d.$dialog.one("bsTransitionEnd", function() {
					d.$element.trigger("focus").trigger(f)
				}).emulateTransitionEnd(c.TRANSITION_DURATION) : d.$element.trigger("focus").trigger(f)
			}))
	}, c.prototype.hide = function(b) {
		b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() &&
			(this.isShown = !1, this.escape(), this.resize(), a(document).off("focusin.bs.modal"), this.$element.removeClass(
				"in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"), this.$dialog.off(
				"mousedown.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one(
				"bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(c.TRANSITION_DURATION) : this.hideModal())
	}, c.prototype.enforceFocus = function() {
		a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function(a) {
			this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger("focus")
		}, this))
	}, c.prototype.escape = function() {
		this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", a.proxy(function(a) {
			27 == a.which && this.hide()
		}, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
	}, c.prototype.resize = function() {
		this.isShown ? a(window).on("resize.bs.modal", a.proxy(this.handleUpdate, this)) : a(window).off("resize.bs.modal")
	}, c.prototype.hideModal = function() {
		var a = this;
		this.$element.hide(), this.backdrop(function() {
			a.$body.removeClass("modal-open"), a.resetAdjustments(), a.resetScrollbar(), a.$element.trigger("hidden.bs.modal")
		})
	}, c.prototype.removeBackdrop = function() {
		this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
	}, c.prototype.backdrop = function(b) {
		var d = this,
			e = this.$element.hasClass("fade") ? "fade" : "";
		if (this.isShown && this.options.backdrop) {
			var f = a.support.transition && e;
			if (this.$backdrop = a(document.createElement("div")).addClass("modal-backdrop " + e).appendTo(this.$body), this.$element
				.on("click.dismiss.bs.modal", a.proxy(function(a) {
					return this.ignoreBackdropClick ? void(this.ignoreBackdropClick = !1) : void(a.target === a.currentTarget && (
						"static" == this.options.backdrop ? this.$element[0].focus() : this.hide()))
				}, this)), f && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b) return;
			f ? this.$backdrop.one("bsTransitionEnd", b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : b()
		} else if (!this.isShown && this.$backdrop) {
			this.$backdrop.removeClass("in");
			var g = function() {
				d.removeBackdrop(), b && b()
			};
			a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", g).emulateTransitionEnd(
				c.BACKDROP_TRANSITION_DURATION) : g()
		} else b && b()
	}, c.prototype.handleUpdate = function() {
		this.adjustDialog()
	}, c.prototype.adjustDialog = function() {
		var a = this.$element[0].scrollHeight > document.documentElement.clientHeight;
		this.$element.css({
			paddingLeft: !this.bodyIsOverflowing && a ? this.scrollbarWidth : "",
			paddingRight: this.bodyIsOverflowing && !a ? this.scrollbarWidth : ""
		})
	}, c.prototype.resetAdjustments = function() {
		this.$element.css({
			paddingLeft: "",
			paddingRight: ""
		})
	}, c.prototype.checkScrollbar = function() {
		var a = window.innerWidth;
		if (!a) {
			var b = document.documentElement.getBoundingClientRect();
			a = b.right - Math.abs(b.left)
		}
		this.bodyIsOverflowing = document.body.clientWidth < a, this.scrollbarWidth = this.measureScrollbar()
	}, c.prototype.setScrollbar = function() {
		var a = parseInt(this.$body.css("padding-right") || 0, 10);
		this.originalBodyPad = document.body.style.paddingRight || "", this.bodyIsOverflowing && this.$body.css(
			"padding-right", a + this.scrollbarWidth)
	}, c.prototype.resetScrollbar = function() {
		this.$body.css("padding-right", this.originalBodyPad)
	}, c.prototype.measureScrollbar = function() {
		var a = document.createElement("div");
		a.className = "modal-scrollbar-measure", this.$body.append(a);
		var b = a.offsetWidth - a.clientWidth;
		return this.$body[0].removeChild(a), b
	};
	var d = a.fn.modal;
	a.fn.modal = b, a.fn.modal.Constructor = c, a.fn.modal.noConflict = function() {
		return a.fn.modal = d, this
	}, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(c) {
		var d = a(this),
			e = d.attr("href"),
			f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, "")),
			g = f.data("bs.modal") ? "toggle" : a.extend({
				remote: !/#/.test(e) && e
			}, f.data(), d.data());
		d.is("a") && c.preventDefault(), f.one("show.bs.modal", function(a) {
			a.isDefaultPrevented() || f.one("hidden.bs.modal", function() {
				d.is(":visible") && d.trigger("focus")
			})
		}), b.call(f, g, this)
	})
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		return this.each(function() {
			var d = a(this),
				e = d.data("bs.tooltip"),
				f = "object" == typeof b && b;
			(e || !/destroy|hide/.test(b)) && (e || d.data("bs.tooltip", e = new c(this, f)), "string" == typeof b && e[b]())
		})
	}
	var c = function(a, b) {
		this.type = null, this.options = null, this.enabled = null, this.timeout = null, this.hoverState = null, this.$element =
			null, this.inState = null, this.init("tooltip", a, b)
	};
	c.VERSION = "3.3.6", c.TRANSITION_DURATION = 150, c.DEFAULTS = {
		animation: !0,
		placement: "top",
		selector: !1,
		template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
		trigger: "hover focus",
		title: "",
		delay: 0,
		html: !1,
		container: !1,
		viewport: {
			selector: "body",
			padding: 0
		}
	}, c.prototype.init = function(b, c, d) {
		if (this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this.$viewport = this
			.options.viewport && a(a.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this
				.options.viewport.selector || this.options.viewport), this.inState = {
				click: !1,
				hover: !1,
				focus: !1
			}, this.$element[0] instanceof document.constructor && !this.options.selector) throw new Error(
			"`selector` option must be specified when initializing " + this.type + " on the window.document object!");
		for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
			var g = e[f];
			if ("click" == g) this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this));
			else if ("manual" != g) {
				var h = "hover" == g ? "mouseenter" : "focusin",
					i = "hover" == g ? "mouseleave" : "focusout";
				this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." +
					this.type, this.options.selector, a.proxy(this.leave, this))
			}
		}
		this.options.selector ? this._options = a.extend({}, this.options, {
			trigger: "manual",
			selector: ""
		}) : this.fixTitle()
	}, c.prototype.getDefaults = function() {
		return c.DEFAULTS
	}, c.prototype.getOptions = function(b) {
		return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {
			show: b.delay,
			hide: b.delay
		}), b
	}, c.prototype.getDelegateOptions = function() {
		var b = {},
			c = this.getDefaults();
		return this._options && a.each(this._options, function(a, d) {
			c[a] != d && (b[a] = d)
		}), b
	}, c.prototype.enter = function(b) {
		var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
		return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." +
			this.type, c)), b instanceof a.Event && (c.inState["focusin" == b.type ? "focus" : "hover"] = !0), c.tip().hasClass(
			"in") || "in" == c.hoverState ? void(c.hoverState = "in") : (clearTimeout(c.timeout), c.hoverState = "in", c.options
			.delay && c.options.delay.show ? void(c.timeout = setTimeout(function() {
				"in" == c.hoverState && c.show()
			}, c.options.delay.show)) : c.show())
	}, c.prototype.isInStateTrue = function() {
		for (var a in this.inState)
			if (this.inState[a]) return !0;
		return !1
	}, c.prototype.leave = function(b) {
		var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
		return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." +
				this.type, c)), b instanceof a.Event && (c.inState["focusout" == b.type ? "focus" : "hover"] = !1), c.isInStateTrue() ?
			void 0 : (clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? void(c.timeout =
				setTimeout(function() {
					"out" == c.hoverState && c.hide()
				}, c.options.delay.hide)) : c.hide())
	}, c.prototype.show = function() {
		var b = a.Event("show.bs." + this.type);
		if (this.hasContent() && this.enabled) {
			this.$element.trigger(b);
			var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
			if (b.isDefaultPrevented() || !d) return;
			var e = this,
				f = this.tip(),
				g = this.getUID(this.type);
			this.setContent(), f.attr("id", g), this.$element.attr("aria-describedby", g), this.options.animation && f.addClass(
				"fade");
			var h = "function" == typeof this.options.placement ? this.options.placement.call(this, f[0], this.$element[0]) :
				this.options.placement,
				i = /\s?auto?\s?/i,
				j = i.test(h);
			j && (h = h.replace(i, "") || "top"), f.detach().css({
				top: 0,
				left: 0,
				display: "block"
			}).addClass(h).data("bs." + this.type, this), this.options.container ? f.appendTo(this.options.container) : f.insertAfter(
				this.$element), this.$element.trigger("inserted.bs." + this.type);
			var k = this.getPosition(),
				l = f[0].offsetWidth,
				m = f[0].offsetHeight;
			if (j) {
				var n = h,
					o = this.getPosition(this.$viewport);
				h = "bottom" == h && k.bottom + m > o.bottom ? "top" : "top" == h && k.top - m < o.top ? "bottom" : "right" == h &&
					k.right + l > o.width ? "left" : "left" == h && k.left - l < o.left ? "right" : h, f.removeClass(n).addClass(h)
			}
			var p = this.getCalculatedOffset(h, k, l, m);
			this.applyPlacement(p, h);
			var q = function() {
				var a = e.hoverState;
				e.$element.trigger("shown.bs." + e.type), e.hoverState = null, "out" == a && e.leave(e)
			};
			a.support.transition && this.$tip.hasClass("fade") ? f.one("bsTransitionEnd", q).emulateTransitionEnd(c.TRANSITION_DURATION) :
				q()
		}
	}, c.prototype.applyPlacement = function(b, c) {
		var d = this.tip(),
			e = d[0].offsetWidth,
			f = d[0].offsetHeight,
			g = parseInt(d.css("margin-top"), 10),
			h = parseInt(d.css("margin-left"), 10);
		isNaN(g) && (g = 0), isNaN(h) && (h = 0), b.top += g, b.left += h, a.offset.setOffset(d[0], a.extend({
			using: function(a) {
				d.css({
					top: Math.round(a.top),
					left: Math.round(a.left)
				})
			}
		}, b), 0), d.addClass("in");
		var i = d[0].offsetWidth,
			j = d[0].offsetHeight;
		"top" == c && j != f && (b.top = b.top + f - j);
		var k = this.getViewportAdjustedDelta(c, b, i, j);
		k.left ? b.left += k.left : b.top += k.top;
		var l = /top|bottom/.test(c),
			m = l ? 2 * k.left - e + i : 2 * k.top - f + j,
			n = l ? "offsetWidth" : "offsetHeight";
		d.offset(b), this.replaceArrow(m, d[0][n], l)
	}, c.prototype.replaceArrow = function(a, b, c) {
		this.arrow().css(c ? "left" : "top", 50 * (1 - a / b) + "%").css(c ? "top" : "left", "")
	}, c.prototype.setContent = function() {
		var a = this.tip(),
			b = this.getTitle();
		a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right")
	}, c.prototype.hide = function(b) {
		function d() {
			"in" != e.hoverState && f.detach(), e.$element.removeAttr("aria-describedby").trigger("hidden.bs." + e.type), b &&
				b()
		}
		var e = this,
			f = a(this.$tip),
			g = a.Event("hide.bs." + this.type);
		return this.$element.trigger(g), g.isDefaultPrevented() ? void 0 : (f.removeClass("in"), a.support.transition && f.hasClass(
				"fade") ? f.one("bsTransitionEnd", d).emulateTransitionEnd(c.TRANSITION_DURATION) : d(), this.hoverState = null,
			this)
	}, c.prototype.fixTitle = function() {
		var a = this.$element;
		(a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr(
			"title") || "").attr("title", "")
	}, c.prototype.hasContent = function() {
		return this.getTitle()
	}, c.prototype.getPosition = function(b) {
		b = b || this.$element;
		var c = b[0],
			d = "BODY" == c.tagName,
			e = c.getBoundingClientRect();
		null == e.width && (e = a.extend({}, e, {
			width: e.right - e.left,
			height: e.bottom - e.top
		}));
		var f = d ? {
				top: 0,
				left: 0
			} : b.offset(),
			g = {
				scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop()
			},
			h = d ? {
				width: a(window).width(),
				height: a(window).height()
			} : null;
		return a.extend({}, e, g, h, f)
	}, c.prototype.getCalculatedOffset = function(a, b, c, d) {
		return "bottom" == a ? {
			top: b.top + b.height,
			left: b.left + b.width / 2 - c / 2
		} : "top" == a ? {
			top: b.top - d,
			left: b.left + b.width / 2 - c / 2
		} : "left" == a ? {
			top: b.top + b.height / 2 - d / 2,
			left: b.left - c
		} : {
			top: b.top + b.height / 2 - d / 2,
			left: b.left + b.width
		}
	}, c.prototype.getViewportAdjustedDelta = function(a, b, c, d) {
		var e = {
			top: 0,
			left: 0
		};
		if (!this.$viewport) return e;
		var f = this.options.viewport && this.options.viewport.padding || 0,
			g = this.getPosition(this.$viewport);
		if (/right|left/.test(a)) {
			var h = b.top - f - g.scroll,
				i = b.top + f - g.scroll + d;
			h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i)
		} else {
			var j = b.left - f,
				k = b.left + f + c;
			j < g.left ? e.left = g.left - j : k > g.right && (e.left = g.left + g.width - k)
		}
		return e
	}, c.prototype.getTitle = function() {
		var a, b = this.$element,
			c = this.options;
		return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
	}, c.prototype.getUID = function(a) {
		do a += ~~(1e6 * Math.random()); while (document.getElementById(a));
		return a
	}, c.prototype.tip = function() {
		if (!this.$tip && (this.$tip = a(this.options.template), 1 != this.$tip.length)) throw new Error(this.type +
			" `template` option must consist of exactly 1 top-level element!");
		return this.$tip
	}, c.prototype.arrow = function() {
		return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
	}, c.prototype.enable = function() {
		this.enabled = !0
	}, c.prototype.disable = function() {
		this.enabled = !1
	}, c.prototype.toggleEnabled = function() {
		this.enabled = !this.enabled
	}, c.prototype.toggle = function(b) {
		var c = this;
		b && (c = a(b.currentTarget).data("bs." + this.type), c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()),
			a(b.currentTarget).data("bs." + this.type, c))), b ? (c.inState.click = !c.inState.click, c.isInStateTrue() ? c.enter(
			c) : c.leave(c)) : c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
	}, c.prototype.destroy = function() {
		var a = this;
		clearTimeout(this.timeout), this.hide(function() {
			a.$element.off("." + a.type).removeData("bs." + a.type), a.$tip && a.$tip.detach(), a.$tip = null, a.$arrow =
				null, a.$viewport = null
		})
	};
	var d = a.fn.tooltip;
	a.fn.tooltip = b, a.fn.tooltip.Constructor = c, a.fn.tooltip.noConflict = function() {
		return a.fn.tooltip = d, this
	}
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		return this.each(function() {
			var d = a(this),
				e = d.data("bs.popover"),
				f = "object" == typeof b && b;
			(e || !/destroy|hide/.test(b)) && (e || d.data("bs.popover", e = new c(this, f)), "string" == typeof b && e[b]())
		})
	}
	var c = function(a, b) {
		this.init("popover", a, b)
	};
	if (!a.fn.tooltip) throw new Error("Popover requires tooltip.js");
	c.VERSION = "3.3.6", c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
			placement: "right",
			trigger: "click",
			content: "",
			template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
		}), c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), c.prototype.constructor = c, c.prototype.getDefaults =
		function() {
			return c.DEFAULTS
		}, c.prototype.setContent = function() {
			var a = this.tip(),
				b = this.getTitle(),
				c = this.getContent();
			a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content").children().detach().end()[
				this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a.removeClass(
				"fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide()
		}, c.prototype.hasContent = function() {
			return this.getTitle() || this.getContent()
		}, c.prototype.getContent = function() {
			var a = this.$element,
				b = this.options;
			return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
		}, c.prototype.arrow = function() {
			return this.$arrow = this.$arrow || this.tip().find(".arrow")
		};
	var d = a.fn.popover;
	a.fn.popover = b, a.fn.popover.Constructor = c, a.fn.popover.noConflict = function() {
		return a.fn.popover = d, this
	}
}(jQuery), + function(a) {
	"use strict";

	function b(c, d) {
		this.$body = a(document.body), this.$scrollElement = a(a(c).is(document.body) ? window : c), this.options = a.extend({},
				b.DEFAULTS, d), this.selector = (this.options.target || "") + " .nav li > a", this.offsets = [], this.targets = [],
			this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on("scroll.bs.scrollspy", a.proxy(this.process,
				this)), this.refresh(), this.process()
	}

	function c(c) {
		return this.each(function() {
			var d = a(this),
				e = d.data("bs.scrollspy"),
				f = "object" == typeof c && c;
			e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]()
		})
	}
	b.VERSION = "3.3.6", b.DEFAULTS = {
		offset: 10
	}, b.prototype.getScrollHeight = function() {
		return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
	}, b.prototype.refresh = function() {
		var b = this,
			c = "offset",
			d = 0;
		this.offsets = [], this.targets = [], this.scrollHeight = this.getScrollHeight(), a.isWindow(this.$scrollElement[0]) ||
			(c = "position", d = this.$scrollElement.scrollTop()), this.$body.find(this.selector).map(function() {
				var b = a(this),
					e = b.data("target") || b.attr("href"),
					f = /^#./.test(e) && a(e);
				return f && f.length && f.is(":visible") && [
					[f[c]().top + d, e]
				] || null
			}).sort(function(a, b) {
				return a[0] - b[0]
			}).each(function() {
				b.offsets.push(this[0]), b.targets.push(this[1])
			})
	}, b.prototype.process = function() {
		var a, b = this.$scrollElement.scrollTop() + this.options.offset,
			c = this.getScrollHeight(),
			d = this.options.offset + c - this.$scrollElement.height(),
			e = this.offsets,
			f = this.targets,
			g = this.activeTarget;
		if (this.scrollHeight != c && this.refresh(), b >= d) return g != (a = f[f.length - 1]) && this.activate(a);
		if (g && b < e[0]) return this.activeTarget = null, this.clear();
		for (a = e.length; a--;) g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this.activate(f[a])
	}, b.prototype.activate = function(b) {
		this.activeTarget = b, this.clear();
		var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]',
			d = a(c).parents("li").addClass("active");
		d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger(
			"activate.bs.scrollspy")
	}, b.prototype.clear = function() {
		a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active")
	};
	var d = a.fn.scrollspy;
	a.fn.scrollspy = c, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function() {
		return a.fn.scrollspy = d, this
	}, a(window).on("load.bs.scrollspy.data-api", function() {
		a('[data-spy="scroll"]').each(function() {
			var b = a(this);
			c.call(b, b.data())
		})
	})
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		return this.each(function() {
			var d = a(this),
				e = d.data("bs.tab");
			e || d.data("bs.tab", e = new c(this)), "string" == typeof b && e[b]()
		})
	}
	var c = function(b) {
		this.element = a(b)
	};
	c.VERSION = "3.3.6", c.TRANSITION_DURATION = 150, c.prototype.show = function() {
		var b = this.element,
			c = b.closest("ul:not(.dropdown-menu)"),
			d = b.data("target");
		if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
			var e = c.find(".active:last a"),
				f = a.Event("hide.bs.tab", {
					relatedTarget: b[0]
				}),
				g = a.Event("show.bs.tab", {
					relatedTarget: e[0]
				});
			if (e.trigger(f), b.trigger(g), !g.isDefaultPrevented() && !f.isDefaultPrevented()) {
				var h = a(d);
				this.activate(b.closest("li"), c), this.activate(h, h.parent(), function() {
					e.trigger({
						type: "hidden.bs.tab",
						relatedTarget: b[0]
					}), b.trigger({
						type: "shown.bs.tab",
						relatedTarget: e[0]
					})
				})
			}
		}
	}, c.prototype.activate = function(b, d, e) {
		function f() {
			g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr(
				"aria-expanded", !1), b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0), h ? (b[0].offsetWidth,
				b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu").length && b.closest("li.dropdown").addClass(
				"active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0), e && e()
		}
		var g = d.find("> .active"),
			h = e && a.support.transition && (g.length && g.hasClass("fade") || !!d.find("> .fade").length);
		g.length && h ? g.one("bsTransitionEnd", f).emulateTransitionEnd(c.TRANSITION_DURATION) : f(), g.removeClass("in")
	};
	var d = a.fn.tab;
	a.fn.tab = b, a.fn.tab.Constructor = c, a.fn.tab.noConflict = function() {
		return a.fn.tab = d, this
	};
	var e = function(c) {
		c.preventDefault(), b.call(a(this), "show")
	};
	a(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', e).on("click.bs.tab.data-api", '[data-toggle="pill"]',
		e)
}(jQuery), + function(a) {
	"use strict";

	function b(b) {
		return this.each(function() {
			var d = a(this),
				e = d.data("bs.affix"),
				f = "object" == typeof b && b;
			e || d.data("bs.affix", e = new c(this, f)), "string" == typeof b && e[b]()
		})
	}
	var c = function(b, d) {
		this.options = a.extend({}, c.DEFAULTS, d), this.$target = a(this.options.target).on("scroll.bs.affix.data-api", a.proxy(
				this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element =
			a(b), this.affixed = null, this.unpin = null, this.pinnedOffset = null, this.checkPosition()
	};
	c.VERSION = "3.3.6", c.RESET = "affix affix-top affix-bottom", c.DEFAULTS = {
		offset: 0,
		target: window
	}, c.prototype.getState = function(a, b, c, d) {
		var e = this.$target.scrollTop(),
			f = this.$element.offset(),
			g = this.$target.height();
		if (null != c && "top" == this.affixed) return c > e ? "top" : !1;
		if ("bottom" == this.affixed) return null != c ? e + this.unpin <= f.top ? !1 : "bottom" : a - d >= e + g ? !1 :
			"bottom";
		var h = null == this.affixed,
			i = h ? e : f.top,
			j = h ? g : b;
		return null != c && c >= e ? "top" : null != d && i + j >= a - d ? "bottom" : !1
	}, c.prototype.getPinnedOffset = function() {
		if (this.pinnedOffset) return this.pinnedOffset;
		this.$element.removeClass(c.RESET).addClass("affix");
		var a = this.$target.scrollTop(),
			b = this.$element.offset();
		return this.pinnedOffset = b.top - a
	}, c.prototype.checkPositionWithEventLoop = function() {
		setTimeout(a.proxy(this.checkPosition, this), 1)
	}, c.prototype.checkPosition = function() {
		if (this.$element.is(":visible")) {
			var b = this.$element.height(),
				d = this.options.offset,
				e = d.top,
				f = d.bottom,
				g = Math.max(a(document).height(), a(document.body).height());
			"object" != typeof d && (f = e = d), "function" == typeof e && (e = d.top(this.$element)), "function" == typeof f &&
				(f = d.bottom(this.$element));
			var h = this.getState(g, b, e, f);
			if (this.affixed != h) {
				null != this.unpin && this.$element.css("top", "");
				var i = "affix" + (h ? "-" + h : ""),
					j = a.Event(i + ".bs.affix");
				if (this.$element.trigger(j), j.isDefaultPrevented()) return;
				this.affixed = h, this.unpin = "bottom" == h ? this.getPinnedOffset() : null, this.$element.removeClass(c.RESET).addClass(
					i).trigger(i.replace("affix", "affixed") + ".bs.affix")
			}
			"bottom" == h && this.$element.offset({
				top: g - b - f
			})
		}
	};
	var d = a.fn.affix;
	a.fn.affix = b, a.fn.affix.Constructor = c, a.fn.affix.noConflict = function() {
		return a.fn.affix = d, this
	}, a(window).on("load", function() {
		a('[data-spy="affix"]').each(function() {
			var c = a(this),
				d = c.data();
			d.offset = d.offset || {}, null != d.offsetBottom && (d.offset.bottom = d.offsetBottom), null != d.offsetTop &&
				(d.offset.top = d.offsetTop), b.call(c, d)
		})
	})
}(jQuery);
/*breakpoints.min.js*/
/*! breakpoints.js - v0.4.2 - 2015-04-22
 * https://github.com/amazingSurge/breakpoints.js
 * Copyright (c) 2015 amazingSurge; Licensed GPL */
! function(a, b, c) {
	"use strict";

	function d(a, b) {
		var c;
		for (var d in a)
			if (c = b(d, a[d]), c === !1) break
	}

	function e(a) {
		return "function" == typeof a || !1
	}

	function f(a, b) {
		for (var c in b) a[c] = b[c];
		return a
	}
	var g = b.Breakpoints = function() {
		g.define.apply(g, arguments)
	};
	g.defaults = {
		xs: {
			min: 0,
			max: 767
		},
		sm: {
			min: 768,
			max: 991
		},
		md: {
			min: 992,
			max: 1199
		},
		lg: {
			min: 1200,
			max: 1 / 0
		}
	};
	var h = g.mediaBuilder = {
			min: function(a, b) {
				return "(min-width: " + a + b + ")"
			},
			max: function(a, b) {
				return "(max-width: " + a + b + ")"
			},
			between: function(a, b, c) {
				return "(min-width: " + a + c + ") and (max-width: " + b + c + ")"
			},
			get: function(a, b, c) {
				return c || (c = "px"), 0 === a ? this.max(b, c) : b === 1 / 0 ? this.min(a, c) : this.between(a, b, c)
			}
		},
		i = function() {
			var a = [];
			return {
				length: 0,
				add: function(b, c, d) {
					a.push({
						fn: b,
						data: c || {},
						one: d || 0
					}), this.length++
				},
				remove: function(b) {
					for (var c = 0; c < a.length; c++) a[c].fn === b && (a.splice(c, 1), this.length--, c--)
				},
				empty: function() {
					a = [], this.length = 0
				},
				call: function(c, d, f) {
					d || (d = this.length - 1);
					var g = a[d];
					e(f) ? f.call(this, c, g, d) : e(g.fn) && g.fn.call(c || b, g.data), g.one && (delete a[d], this.length--)
				},
				fire: function(b, c) {
					for (var d in a) this.call(b, d, c)
				}
			}
		},
		j = {
			current: null,
			callbacks: new i,
			trigger: function(a) {
				var b = this.current;
				this.current = a, this.callbacks.fire(a, function(c, d) {
					e(d.fn) && d.fn.call({
						current: a,
						previous: b
					}, d.data)
				})
			},
			one: function(a, b) {
				return this.on(a, b, 1)
			},
			on: function(a, b, d) {
				return null == b && e(a) && (b = a, a = c), e(b) ? void this.callbacks.add(b, a, d) : this
			},
			off: function(a) {
				null == a && this.callbacks.empty()
			}
		},
		k = g.mediaQuery = function(a, b) {
			this.name = a, this.media = b, this.initialize.apply(this)
		};
	k.prototype = {
		constructor: k,
		initialize: function() {
			this.callbacks = {
				enter: new i,
				leave: new i
			}, this.mql = b.matchMedia && b.matchMedia(this.media) || {
				matches: !1,
				media: this.media,
				addListener: function() {},
				removeListener: function() {}
			};
			var a = this;
			this.mqlListener = function(b) {
				var c = b.matches && "enter" || "leave";
				a.callbacks[c].fire(a)
			}, this.mql.addListener(this.mqlListener)
		},
		on: function(a, b, d, f) {
			var g;
			if ("object" == typeof a) {
				for (g in a) this.on(g, b, a[g], f);
				return this
			}
			return null == d && e(b) && (d = b, b = c), e(d) ? (a in this.callbacks && (this.callbacks[a].add(d, b, f), this.isMatched() &&
				"enter" === a && this.callbacks[a].call(this)), this) : this
		},
		one: function(a, b, c) {
			return this.on(a, b, c, 1)
		},
		off: function(a, b) {
			var c;
			if ("object" == typeof a) {
				for (c in a) this.off(c, a[c]);
				return this
			}
			return null == a && (this.callbacks.enter.empty(), this.callbacks.leave.empty()), a in this.callbacks && (b ? this
				.callbacks[a].remove(b) : this.callbacks[a].empty()), this
		},
		isMatched: function() {
			return this.mql.matches
		},
		destory: function() {
			this.off()
		}
	};
	var l = function(a, b, c, d) {
		this.name = a, this.min = b ? b : 0, this.max = c ? c : 1 / 0, this.media = h.get(this.min, this.max, d), this.initialize
			.apply(this);
		var e = this;
		this.changeListener = function() {
			e.isMatched() && j.trigger(e)
		}, this.isMatched() && (j.current = this), this.mql.addListener(this.changeListener)
	};
	l.prototype = k.prototype, l.prototype.constructor = l, f(l.prototype, {
		destory: function() {
			this.off(), this.mql.removeListener(this.changeHander)
		}
	});
	var m = function(a) {
		this.name = a, this.sizes = [];
		var b = this,
			c = [];
		d(a.split(" "), function(a, d) {
			var e = g.get(d);
			e && (b.sizes.push(e), c.push(e.media))
		}), this.media = c.join(","), this.initialize.apply(this)
	};
	m.prototype = k.prototype, m.prototype.constructor = m;
	var n = {},
		o = {};
	g = f(g, {
		defined: !1,
		define: function(a, b) {
			this.defined && this.destory(), a || (a = g.defaults), this.options = f(b || {}, {
				unit: "px"
			});
			for (var c in a) this.set(c, a[c].min, a[c].max, this.options.unit);
			this.defined = !0
		},
		destory: function() {
			d(n, function(a, b) {
				b.destory()
			}), n = {}, j.current = null
		},
		is: function(a) {
			var b = this.get(a);
			return b ? b.isMatched() : null
		},
		all: function() {
			var a = [];
			return d(n, function(b) {
				a.push(b)
			}), a
		},
		set: function(a, b, c, d) {
			var e = this.get(a);
			return e && e.destory(), n[a] = new l(a, b || null, c || null, d || null), n[a]
		},
		get: function(a) {
			return n.hasOwnProperty(a) ? n[a] : null
		},
		getUnion: function(a) {
			return o.hasOwnProperty(a) ? o[a] : (o[a] = new m(a), o[a])
		},
		getMin: function(a) {
			var b = this.get(a);
			return b ? b.min : null
		},
		getMax: function(a) {
			var b = this.get(a);
			return b ? b.max : null
		},
		current: function() {
			return j.current
		},
		getMedia: function(a) {
			var b = this.get(a);
			return b ? b.media : null
		},
		on: function(a, b, c, d, e) {
			if ("change" === a) return d = c, c = b, j.on(c, d, e);
			if (a.indexOf(" ")) {
				var f = this.getUnion(a);
				f && f.on(b, c, d, e)
			} else {
				var g = this.get(a);
				g && g.on(b, c, d, e)
			}
			return this
		},
		one: function(a, b, c, d) {
			return this.on(a, b, c, d, 1)
		},
		off: function(a, b, c) {
			if ("change" === a) return j.off(b);
			if (a.indexOf(" ")) {
				var d = this.getUnion(a);
				d && d.off(b, c)
			} else {
				var e = this.get(a);
				e && e.off(b, c)
			}
			return this
		}
	})
}(document, window);
/*Breakpoints*/
Breakpoints();
/*core.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
! function(window, document, $) {
	"use strict";
	var $doc = $(document);
	$.site = $.site || {}, $.extend($.site, {
		_queue: {
			prepare: [],
			run: [],
			complete: []
		},
		run: function() {
			var self = this;
			this.dequeue("prepare", function() {
				self.trigger("before.run", self)
			}), this.dequeue("run", function() {
				self.dequeue("complete", function() {
					self.trigger("after.run", self)
				})
			})
		},
		dequeue: function(name, done) {
			var self = this,
				queue = this.getQueue(name),
				fn = queue.shift(),
				next = function() {
					self.dequeue(name, done)
				};
			fn ? fn.call(this, next) : $.isFunction(done) && done.call(this)
		},
		getQueue: function(name) {
			return $.isArray(this._queue[name]) || (this._queue[name] = []), this._queue[name]
		},
		extend: function(obj) {
			return $.each(this._queue, function(name, queue) {
				$.isFunction(obj[name]) && (queue.push(obj[name]), delete obj[name])
			}), $.extend(this, obj), this
		},
		trigger: function(name, data, $el) {
			"undefined" != typeof name && ("undefined" == typeof $el && ($el = $doc), $el.trigger(name + ".site", data))
		},
		throttle: function(func, wait) {
			var context, args, result, _now = Date.now || function() {
					return (new Date).getTime()
				},
				timeout = null,
				previous = 0,
				later = function() {
					previous = _now(), timeout = null, result = func.apply(context, args), context = args = null
				};
			return function() {
				var now = _now(),
					remaining = wait - (now - previous);
				return context = this, args = arguments, 0 >= remaining ? (clearTimeout(timeout), timeout = null, previous =
					now, result = func.apply(context, args), context = args = null) : timeout || (timeout = setTimeout(later,
					remaining)), result
			}
		},
		resize: function() {
			if (document.createEvent) {
				var ev = document.createEvent("Event");
				ev.initEvent("resize", !0, !0), window.dispatchEvent(ev)
			} else {
				element = document.documentElement;
				var event = document.createEventObject();
				element.fireEvent("onresize", event)
			}
		}
	}), $.configs = $.configs || {}, $.extend($.configs, {
		data: {},
		get: function(name) {
			for (var callback = function(data, name) {
					return data[name]
				}, data = this.data, i = 0; i < arguments.length; i++) name = arguments[i], data = callback(data, name);
			return data
		},
		set: function(name, value) {
			this.data[name] = value
		},
		extend: function(name, options) {
			var value = this.get(name);
			return $.extend(!0, value, options)
		}
	}), $.colors = function(name, level) {
		if ("primary" === name && (name = $.configs.get("site", "primaryColor"), name || (name = "red")), "undefined" ==
			typeof $.configs.colors) return null;
		if ("undefined" != typeof $.configs.colors[name]) {
			if (level && "undefined" != typeof $.configs.colors[name][level]) return $.configs.colors[name][level];
			if ("undefined" == typeof level) return $.configs.colors[name]
		}
		return null
	}, $.components = $.components || {}, $.extend($.components, {
		_components: {},
		register: function(name, obj) {
			this._components[name] = obj
		},
		init: function(name, context, args) {
			var self = this;
			if ("undefined" == typeof name) $.each(this._components, function(name) {
				self.init(name)
			});
			else {
				context = context || document, args = args || [];
				var obj = this.get(name);
				if (obj) switch (obj.mode) {
					case "default":
						return this._initDefault(name, context);
					case "init":
						return this._initComponent(name, obj, context, args);
					case "api":
						return this._initApi(name, obj, args);
					default:
						return this._initApi(name, obj, context, args), void this._initComponent(name, obj, context, args)
				}
			}
		},
		call: function(name, context) {
			var args = Array.prototype.slice.call(arguments, 2),
				obj = this.get(name);
			return context = context || document, this._initComponent(name, obj, context, args)
		},
		_initDefault: function(name, context) {
			if ($.fn[name]) {
				var defaults = this.getDefaults(name);
				$("[data-plugin=" + name + "]", context).each(function() {
					var $this = $(this),
						options = $.extend(!0, {}, defaults, $this.data());
					$this[name](options)
				})
			}
		},
		_initComponent: function(name, obj, context, args) {
			$.isFunction(obj.init) && obj.init.apply(obj, [context].concat(args))
		},
		_initApi: function(name, obj, args) {
			"undefined" == typeof obj.apiCalled && $.isFunction(obj.api) && (obj.api.apply(obj, args), obj.apiCalled = !0)
		},
		getDefaults: function(name) {
			var component = this.get(name);
			return component && "undefined" != typeof component.defaults ? component.defaults : {}
		},
		get: function(name, property) {
			return "undefined" != typeof this._components[name] ? "undefined" != typeof property ? this._components[name][
				property
			] : this._components[name] : void 0
		}
	})
}(window, document, jQuery);
/*site.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
! function(window, document, $) {
	"use strict";
	var $body = $(document.body);
	$.configs.set("site", {
		fontFamily: "Noto Sans, sans-serif",
		primaryColor: "blue",
		assets: "../assets"
	}), window.Site = $.site.extend({
		run: function(next) {
			this.polyfillIEWidth(), "undefined" != typeof $.site.menu && $.site.menu.init(), "undefined" != typeof $.site.menubar &&
				($(".site-menubar").on("changing.site.menubar", function() {
					$('[data-toggle="menubar"]').each(function() {
						function toggle($el) {
							$el.toggleClass("hided", !$.site.menubar.opened), $el.toggleClass("unfolded", !$.site.menubar.folded)
						}
						var $this = $(this),
							$hamburger = $(this).find(".hamburger");
						toggle($hamburger.length > 0 ? $hamburger : $this)
					}), $.site.menu.refresh()
				}), $(document).on("click", '[data-toggle="collapse"]', function(e) {
					var $trigger = $(e.target);
					$trigger.is('[data-toggle="collapse"]') || ($trigger = $trigger.parents('[data-toggle="collapse"]'));
					var href, target = $trigger.attr("data-target") || (href = $trigger.attr("href")) && href.replace(
							/.*(?=#[^\s]+$)/, ""),
						$target = $(target);
					if ($target.hasClass("navbar-search-overlap")) $target.find("input").focus(), e.preventDefault();
					else if ("site-navbar-collapse" === $target.attr("id")) {
						var isOpen = !$trigger.hasClass("collapsed");
						$body.addClass("site-navbar-collapsing"), $body.toggleClass("site-navbar-collapse-show", isOpen), setTimeout(
							function() {
								$body.removeClass("site-navbar-collapsing")
							}, 350), isOpen && $.site.menubar.scrollable.update()
					}
				}), $(document).on("click", '[data-toggle="menubar"]', function() {
					return $.site.menubar.toggle(), !1
				}), $.site.menubar.init(), Breakpoints.on("change", function() {
					$.site.menubar.change()
				})), "undefined" != typeof $.site.gridmenu && $.site.gridmenu.init(), "undefined" != typeof $.site.sidebar && $.site
				.sidebar.init(), $(document).tooltip({
					selector: "[data-tooltip=true]",
					container: "body"
				}), $('[data-toggle="tooltip"]').tooltip(), $('[data-toggle="popover"]').popover(), "undefined" != typeof screenfull &&
				($(document).on("click", '[data-toggle="fullscreen"]', function() {
					return screenfull.enabled && screenfull.toggle(), !1
				}), screenfull.enabled && document.addEventListener(screenfull.raw.fullscreenchange, function() {
					$('[data-toggle="fullscreen"]').toggleClass("active", screenfull.isFullscreen)
				})), $body.on("click", ".dropdown-menu-media", function(e) {
					e.stopPropagation()
				}), "undefined" != typeof $.animsition ? this.loadAnimate(function() {
					$(".animsition").css({
						"animation-duration": "0s"
					}), next()
				}) : next(), $(document).on("click", ".navbar-mega .dropdown-menu", function(e) {
					e.stopPropagation()
				}), $(document).on("show.bs.dropdown", function(e) {
					var $target = $(e.target),
						$trigger = e.relatedTarget ? $(e.relatedTarget) : $target.children('[data-toggle="dropdown"]'),
						animation = $trigger.data("animation");
					if (animation) {
						var $menu = $target.children(".dropdown-menu");
						$menu.addClass("animation-" + animation), $menu.one(
							"webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",
							function() {
								$menu.removeClass("animation-" + animation)
							})
					}
				}), $(document).on("shown.bs.dropdown", function(e) {
					var $target = $(e.target),
						$menu = $target.find(".dropdown-menu-media > .list-group");
					if ($menu.length > 0) {
						var api = $menu.data("asScrollable");
						if (api) api.update();
						else {
							var defaults = $.components.getDefaults("scrollable");
							$menu.asScrollable(defaults)
						}
					}
				});
			var pageAsideScroll = $('[data-plugin="pageAsideScroll"]');
			if (pageAsideScroll.length > 0) {
				pageAsideScroll.asScrollable({
					namespace: "scrollable",
					contentSelector: "> [data-role='content']",
					containerSelector: "> [data-role='container']"
				});
				var pageAside = $(".page-aside"),
					scrollable = pageAsideScroll.data("asScrollable");
				scrollable && (($body.is(".page-aside-fixed") || $body.is(".page-aside-scroll")) && $(".page-aside").on(
					"transitionend",
					function() {
						scrollable.update()
					}), Breakpoints.on("change", function() {
					var current = Breakpoints.current().name;
					$body.is(".page-aside-fixed") || $body.is(".page-aside-scroll") || ("xs" === current ? (scrollable.enable(),
						pageAside.on("transitionend", function() {
							scrollable.update()
						})) : (pageAside.off("transitionend"), scrollable.disable()))
				}), $(document).on("click.pageAsideScroll", ".page-aside-switch", function() {
					var isOpen = pageAside.hasClass("open");
					isOpen ? pageAside.removeClass("open") : (scrollable.update(), pageAside.addClass("open"))
				}), $(document).on("click.pageAsideScroll", '[data-toggle="collapse"]', function(e) {
					var $trigger = $(e.target);
					$trigger.is('[data-toggle="collapse"]') || ($trigger = $trigger.parents('[data-toggle="collapse"]'));
					var href, target = $trigger.attr("data-target") || (href = $trigger.attr("href")) && href.replace(
							/.*(?=#[^\s]+$)/, ""),
						$target = $(target);
					"site-navbar-collapse" === $target.attr("id") && scrollable.update()
				}))
			}
			$.components.init(), this.startTour()
		},
		polyfillIEWidth: function() {
			if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
				var msViewportStyle = document.createElement("style");
				msViewportStyle.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")), document.querySelector(
					"head").appendChild(msViewportStyle)
			}
		},
		loadAnimate: function(callback) {
			return $.components.call("animsition", document, callback)
		},
		startTour: function(flag) {
			if ("undefined" == typeof this.tour) {
				if ("undefined" == typeof introJs) return;
				var tourOptions = $.configs.get("tour"),
					self = this;
				flag = $("body").css("overflow"), this.tour = introJs(), this.tour.onbeforechange(function() {
					$("body").css("overflow", "hidden")
				}), this.tour.oncomplete(function() {
					$("body").css("overflow", flag)
				}), this.tour.onexit(function() {
					$("body").css("overflow", flag)
				}), this.tour.setOptions(tourOptions), $(".site-tour-trigger").on("click", function() {
					self.tour.start()
				})
			}
		}
	})
}(window, document, jQuery);
/*modernizr.min.js*/
/* Modernizr 2.8.3 (Custom Build) | MIT & BSD
 * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
 */
;
window.Modernizr = function(a, b, c) {
		function C(a) {
			j.cssText = a
		}

		function D(a, b) {
			return C(n.join(a + ";") + (b || ""))
		}

		function E(a, b) {
			return typeof a === b
		}

		function F(a, b) {
			return !!~("" + a).indexOf(b)
		}

		function G(a, b) {
			for (var d in a) {
				var e = a[d];
				if (!F(e, "-") && j[e] !== c) return b == "pfx" ? e : !0
			}
			return !1
		}

		function H(a, b, d) {
			for (var e in a) {
				var f = b[a[e]];
				if (f !== c) return d === !1 ? a[e] : E(f, "function") ? f.bind(d || b) : f
			}
			return !1
		}

		function I(a, b, c) {
			var d = a.charAt(0).toUpperCase() + a.slice(1),
				e = (a + " " + p.join(d + " ") + d).split(" ");
			return E(b, "string") || E(b, "undefined") ? G(e, b) : (e = (a + " " + q.join(d + " ") + d).split(" "), H(e, b, c))
		}

		function J() {
			e.input = function(c) {
					for (var d = 0, e = c.length; d < e; d++) u[c[d]] = c[d] in k;
					return u.list && (u.list = !!b.createElement("datalist") && !!a.HTMLDataListElement), u
				}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")), e.inputtypes =
				function(a) {
					for (var d = 0, e, f, h, i = a.length; d < i; d++) k.setAttribute("type", f = a[d]), e = k.type !== "text", e && (
						k.value = l, k.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(f) && k.style.WebkitAppearance !==
						c ? (g.appendChild(k), h = b.defaultView, e = h.getComputedStyle && h.getComputedStyle(k, null).WebkitAppearance !==
							"textfield" && k.offsetHeight !== 0, g.removeChild(k)) : /^(search|tel)$/.test(f) || (/^(url|email)$/.test(f) ?
							e = k.checkValidity && k.checkValidity() === !1 : e = k.value != l)), t[a[d]] = !!e;
					return t
				}("search tel url email datetime date month week time datetime-local number range color".split(" "))
		}
		var d = "2.8.3",
			e = {},
			f = !0,
			g = b.documentElement,
			h = "modernizr",
			i = b.createElement(h),
			j = i.style,
			k = b.createElement("input"),
			l = ":)",
			m = {}.toString,
			n = " -webkit- -moz- -o- -ms- ".split(" "),
			o = "Webkit Moz O ms",
			p = o.split(" "),
			q = o.toLowerCase().split(" "),
			r = {
				svg: "http://www.w3.org/2000/svg"
			},
			s = {},
			t = {},
			u = {},
			v = [],
			w = v.slice,
			x, y = function(a, c, d, e) {
				var f, i, j, k, l = b.createElement("div"),
					m = b.body,
					n = m || b.createElement("body");
				if (parseInt(d, 10))
					while (d--) j = b.createElement("div"), j.id = e ? e[d] : h + (d + 1), l.appendChild(j);
				return f = ["&#173;", '<style id="s', h, '">', a, "</style>"].join(""), l.id = h, (m ? l : n).innerHTML += f, n.appendChild(
					l), m || (n.style.background = "", n.style.overflow = "hidden", k = g.style.overflow, g.style.overflow = "hidden",
					g.appendChild(n)), i = c(l, a), m ? l.parentNode.removeChild(l) : (n.parentNode.removeChild(n), g.style.overflow =
					k), !!i
			},
			z = function() {
				function d(d, e) {
					e = e || b.createElement(a[d] || "div"), d = "on" + d;
					var f = d in e;
					return f || (e.setAttribute || (e = b.createElement("div")), e.setAttribute && e.removeAttribute && (e.setAttribute(
						d, ""), f = E(e[d], "function"), E(e[d], "undefined") || (e[d] = c), e.removeAttribute(d))), e = null, f
				}
				var a = {
					select: "input",
					change: "input",
					submit: "form",
					reset: "form",
					error: "img",
					load: "img",
					abort: "img"
				};
				return d
			}(),
			A = {}.hasOwnProperty,
			B;
		!E(A, "undefined") && !E(A.call, "undefined") ? B = function(a, b) {
			return A.call(a, b)
		} : B = function(a, b) {
			return b in a && E(a.constructor.prototype[b], "undefined")
		}, Function.prototype.bind || (Function.prototype.bind = function(b) {
			var c = this;
			if (typeof c != "function") throw new TypeError;
			var d = w.call(arguments, 1),
				e = function() {
					if (this instanceof e) {
						var a = function() {};
						a.prototype = c.prototype;
						var f = new a,
							g = c.apply(f, d.concat(w.call(arguments)));
						return Object(g) === g ? g : f
					}
					return c.apply(b, d.concat(w.call(arguments)))
				};
			return e
		}), s.flexbox = function() {
			return I("flexWrap")
		}, s.canvas = function() {
			var a = b.createElement("canvas");
			return !!a.getContext && !!a.getContext("2d")
		}, s.canvastext = function() {
			return !!e.canvas && !!E(b.createElement("canvas").getContext("2d").fillText, "function")
		}, s.webgl = function() {
			return !!a.WebGLRenderingContext
		}, s.touch = function() {
			var c;
			return "ontouchstart" in a || a.DocumentTouch && b instanceof DocumentTouch ? c = !0 : y(["@media (", n.join(
				"touch-enabled),("), h, ")", "{#modernizr{top:9px;position:absolute}}"].join(""), function(a) {
				c = a.offsetTop === 9
			}), c
		}, s.geolocation = function() {
			return "geolocation" in navigator
		}, s.postmessage = function() {
			return !!a.postMessage
		}, s.websqldatabase = function() {
			return !!a.openDatabase
		}, s.indexedDB = function() {
			return !!I("indexedDB", a)
		}, s.hashchange = function() {
			return z("hashchange", a) && (b.documentMode === c || b.documentMode > 7)
		}, s.history = function() {
			return !!a.history && !!history.pushState
		}, s.draganddrop = function() {
			var a = b.createElement("div");
			return "draggable" in a || "ondragstart" in a && "ondrop" in a
		}, s.websockets = function() {
			return "WebSocket" in a || "MozWebSocket" in a
		}, s.rgba = function() {
			return C("background-color:rgba(150,255,150,.5)"), F(j.backgroundColor, "rgba")
		}, s.hsla = function() {
			return C("background-color:hsla(120,40%,100%,.5)"), F(j.backgroundColor, "rgba") || F(j.backgroundColor, "hsla")
		}, s.multiplebgs = function() {
			return C("background:url(https://),url(https://),red url(https://)"), /(url\s*\(.*?){3}/.test(j.background)
		}, s.backgroundsize = function() {
			return I("backgroundSize")
		}, s.borderimage = function() {
			return I("borderImage")
		}, s.borderradius = function() {
			return I("borderRadius")
		}, s.boxshadow = function() {
			return I("boxShadow")
		}, s.textshadow = function() {
			return b.createElement("div").style.textShadow === ""
		}, s.opacity = function() {
			return D("opacity:.55"), /^0.55$/.test(j.opacity)
		}, s.cssanimations = function() {
			return I("animationName")
		}, s.csscolumns = function() {
			return I("columnCount")
		}, s.cssgradients = function() {
			var a = "background-image:",
				b = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
				c = "linear-gradient(left top,#9f9, white);";
			return C((a + "-webkit- ".split(" ").join(b + a) + n.join(c + a)).slice(0, -a.length)), F(j.backgroundImage,
				"gradient")
		}, s.cssreflections = function() {
			return I("boxReflect")
		}, s.csstransforms = function() {
			return !!I("transform")
		}, s.csstransforms3d = function() {
			var a = !!I("perspective");
			return a && "webkitPerspective" in g.style && y(
				"@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",
				function(b, c) {
					a = b.offsetLeft === 9 && b.offsetHeight === 3
				}), a
		}, s.csstransitions = function() {
			return I("transition")
		}, s.fontface = function() {
			var a;
			return y('@font-face {font-family:"font";src:url("https://")}', function(c, d) {
				var e = b.getElementById("smodernizr"),
					f = e.sheet || e.styleSheet,
					g = f ? f.cssRules && f.cssRules[0] ? f.cssRules[0].cssText : f.cssText || "" : "";
				a = /src/i.test(g) && g.indexOf(d.split(" ")[0]) === 0
			}), a
		}, s.generatedcontent = function() {
			var a;
			return y(["#", h, "{font:0/0 a}#", h, ':after{content:"', l, '";visibility:hidden;font:3px/1 a}'].join(""),
				function(b) {
					a = b.offsetHeight >= 3
				}), a
		}, s.video = function() {
			var a = b.createElement("video"),
				c = !1;
			try {
				if (c = !!a.canPlayType) c = new Boolean(c), c.ogg = a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,
					""), c.h264 = a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), c.webm = a.canPlayType(
					'video/webm; codecs="vp8, vorbis"').replace(/^no$/, "")
			} catch (d) {}
			return c
		}, s.audio = function() {
			var a = b.createElement("audio"),
				c = !1;
			try {
				if (c = !!a.canPlayType) c = new Boolean(c), c.ogg = a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,
					""), c.mp3 = a.canPlayType("audio/mpeg;").replace(/^no$/, ""), c.wav = a.canPlayType('audio/wav; codecs="1"').replace(
					/^no$/, ""), c.m4a = (a.canPlayType("audio/x-m4a;") || a.canPlayType("audio/aac;")).replace(/^no$/, "")
			} catch (d) {}
			return c
		}, s.localstorage = function() {
			try {
				return localStorage.setItem(h, h), localStorage.removeItem(h), !0
			} catch (a) {
				return !1
			}
		}, s.sessionstorage = function() {
			try {
				return sessionStorage.setItem(h, h), sessionStorage.removeItem(h), !0
			} catch (a) {
				return !1
			}
		}, s.webworkers = function() {
			return !!a.Worker
		}, s.applicationcache = function() {
			return !!a.applicationCache
		}, s.svg = function() {
			return !!b.createElementNS && !!b.createElementNS(r.svg, "svg").createSVGRect
		}, s.inlinesvg = function() {
			var a = b.createElement("div");
			return a.innerHTML = "<svg/>", (a.firstChild && a.firstChild.namespaceURI) == r.svg
		}, s.smil = function() {
			return !!b.createElementNS && /SVGAnimate/.test(m.call(b.createElementNS(r.svg, "animate")))
		}, s.svgclippaths = function() {
			return !!b.createElementNS && /SVGClipPath/.test(m.call(b.createElementNS(r.svg, "clipPath")))
		};
		for (var K in s) B(s, K) && (x = K.toLowerCase(), e[x] = s[K](), v.push((e[x] ? "" : "no-") + x));
		return e.input || J(), e.addTest = function(a, b) {
				if (typeof a == "object")
					for (var d in a) B(a, d) && e.addTest(d, a[d]);
				else {
					a = a.toLowerCase();
					if (e[a] !== c) return e;
					b = typeof b == "function" ? b() : b, typeof f != "undefined" && f && (g.className += " " + (b ? "" : "no-") + a),
						e[a] = b
				}
				return e
			}, C(""), i = k = null,
			function(a, b) {
				function l(a, b) {
					var c = a.createElement("p"),
						d = a.getElementsByTagName("head")[0] || a.documentElement;
					return c.innerHTML = "x<style>" + b + "</style>", d.insertBefore(c.lastChild, d.firstChild)
				}

				function m() {
					var a = s.elements;
					return typeof a == "string" ? a.split(" ") : a
				}

				function n(a) {
					var b = j[a[h]];
					return b || (b = {}, i++, a[h] = i, j[i] = b), b
				}

				function o(a, c, d) {
					c || (c = b);
					if (k) return c.createElement(a);
					d || (d = n(c));
					var g;
					return d.cache[a] ? g = d.cache[a].cloneNode() : f.test(a) ? g = (d.cache[a] = d.createElem(a)).cloneNode() : g =
						d.createElem(a), g.canHaveChildren && !e.test(a) && !g.tagUrn ? d.frag.appendChild(g) : g
				}

				function p(a, c) {
					a || (a = b);
					if (k) return a.createDocumentFragment();
					c = c || n(a);
					var d = c.frag.cloneNode(),
						e = 0,
						f = m(),
						g = f.length;
					for (; e < g; e++) d.createElement(f[e]);
					return d
				}

				function q(a, b) {
					b.cache || (b.cache = {}, b.createElem = a.createElement, b.createFrag = a.createDocumentFragment, b.frag = b.createFrag()),
						a.createElement = function(c) {
							return s.shivMethods ? o(c, a, b) : b.createElem(c)
						}, a.createDocumentFragment = Function("h,f",
							"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + m().join().replace(/[\w\-]+/g,
								function(a) {
									return b.createElem(a), b.frag.createElement(a), 'c("' + a + '")'
								}) + ");return n}")(s, b.frag)
				}

				function r(a) {
					a || (a = b);
					var c = n(a);
					return s.shivCSS && !g && !c.hasCSS && (c.hasCSS = !!l(a,
						"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}"
					)), k || q(a, c), a
				}
				var c = "3.7.0",
					d = a.html5 || {},
					e = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
					f = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
					g, h = "_html5shiv",
					i = 0,
					j = {},
					k;
				(function() {
					try {
						var a = b.createElement("a");
						a.innerHTML = "<xyz></xyz>", g = "hidden" in a, k = a.childNodes.length == 1 || function() {
							b.createElement("a");
							var a = b.createDocumentFragment();
							return typeof a.cloneNode == "undefined" || typeof a.createDocumentFragment == "undefined" || typeof a.createElement ==
								"undefined"
						}()
					} catch (c) {
						g = !0, k = !0
					}
				})();
				var s = {
					elements: d.elements ||
						"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",
					version: c,
					shivCSS: d.shivCSS !== !1,
					supportsUnknownElements: k,
					shivMethods: d.shivMethods !== !1,
					type: "default",
					shivDocument: r,
					createElement: o,
					createDocumentFragment: p
				};
				a.html5 = s, r(b)
			}(this, b), e._version = d, e._prefixes = n, e._domPrefixes = q, e._cssomPrefixes = p, e.hasEvent = z, e.testProp =
			function(a) {
				return G([a])
			}, e.testAllProps = I, e.testStyles = y, e.prefixed = function(a, b, c) {
				return b ? I(a, b, c) : I(a, "pfx")
			}, g.className = g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (f ? " js " + v.join(" ") : ""), e
	}(this, this.document),
	function(a, b, c) {
		function d(a) {
			return "[object Function]" == o.call(a)
		}

		function e(a) {
			return "string" == typeof a
		}

		function f() {}

		function g(a) {
			return !a || "loaded" == a || "complete" == a || "uninitialized" == a
		}

		function h() {
			var a = p.shift();
			q = 1, a ? a.t ? m(function() {
				("c" == a.t ? B.injectCss : B.injectJs)(a.s, 0, a.a, a.x, a.e, 1)
			}, 0) : (a(), h()) : q = 0
		}

		function i(a, c, d, e, f, i, j) {
			function k(b) {
				if (!o && g(l.readyState) && (u.r = o = 1, !q && h(), l.onload = l.onreadystatechange = null, b)) {
					"img" != a && m(function() {
						t.removeChild(l)
					}, 50);
					for (var d in y[c]) y[c].hasOwnProperty(d) && y[c][d].onload()
				}
			}
			var j = j || B.errorTimeout,
				l = b.createElement(a),
				o = 0,
				r = 0,
				u = {
					t: d,
					s: c,
					e: f,
					a: i,
					x: j
				};
			1 === y[c] && (r = 1, y[c] = []), "object" == a ? l.data = c : (l.src = c, l.type = a), l.width = l.height = "0", l.onerror =
				l.onload = l.onreadystatechange = function() {
					k.call(this, r)
				}, p.splice(e, 0, u), "img" != a && (r || 2 === y[c] ? (t.insertBefore(l, s ? null : n), m(k, j)) : y[c].push(l))
		}

		function j(a, b, c, d, f) {
			return q = 0, b = b || "j", e(a) ? i("c" == b ? v : u, a, b, this.i++, c, d, f) : (p.splice(this.i++, 0, a), 1 == p.length &&
				h()), this
		}

		function k() {
			var a = B;
			return a.loader = {
				load: j,
				i: 0
			}, a
		}
		var l = b.documentElement,
			m = a.setTimeout,
			n = b.getElementsByTagName("script")[0],
			o = {}.toString,
			p = [],
			q = 0,
			r = "MozAppearance" in l.style,
			s = r && !!b.createRange().compareNode,
			t = s ? l : n.parentNode,
			l = a.opera && "[object Opera]" == o.call(a.opera),
			l = !!b.attachEvent && !l,
			u = r ? "object" : l ? "script" : "img",
			v = l ? "script" : u,
			w = Array.isArray || function(a) {
				return "[object Array]" == o.call(a)
			},
			x = [],
			y = {},
			z = {
				timeout: function(a, b) {
					return b.length && (a.timeout = b[0]), a
				}
			},
			A, B;
		B = function(a) {
			function b(a) {
				var a = a.split("!"),
					b = x.length,
					c = a.pop(),
					d = a.length,
					c = {
						url: c,
						origUrl: c,
						prefixes: a
					},
					e, f, g;
				for (f = 0; f < d; f++) g = a[f].split("="), (e = z[g.shift()]) && (c = e(c, g));
				for (f = 0; f < b; f++) c = x[f](c);
				return c
			}

			function g(a, e, f, g, h) {
				var i = b(a),
					j = i.autoCallback;
				i.url.split(".").pop().split("?").shift(), i.bypass || (e && (e = d(e) ? e : e[a] || e[g] || e[a.split("/").pop().split(
					"?")[0]]), i.instead ? i.instead(a, e, f, g, h) : (y[i.url] ? i.noexec = !0 : y[i.url] = 1, f.load(i.url, i.forceCSS ||
					!i.forceJS && "css" == i.url.split(".").pop().split("?").shift() ? "c" : c, i.noexec, i.attrs, i.timeout), (d(
					e) || d(j)) && f.load(function() {
					k(), e && e(i.origUrl, h, g), j && j(i.origUrl, h, g), y[i.url] = 2
				})))
			}

			function h(a, b) {
				function c(a, c) {
					if (a) {
						if (e(a)) c || (j = function() {
							var a = [].slice.call(arguments);
							k.apply(this, a), l()
						}), g(a, j, b, 0, h);
						else if (Object(a) === a)
							for (n in m = function() {
									var b = 0,
										c;
									for (c in a) a.hasOwnProperty(c) && b++;
									return b
								}(), a) a.hasOwnProperty(n) && (!c && !--m && (d(j) ? j = function() {
								var a = [].slice.call(arguments);
								k.apply(this, a), l()
							} : j[n] = function(a) {
								return function() {
									var b = [].slice.call(arguments);
									a && a.apply(this, b), l()
								}
							}(k[n])), g(a[n], j, b, n, h))
					} else !c && l()
				}
				var h = !!a.test,
					i = a.load || a.both,
					j = a.callback || f,
					k = j,
					l = a.complete || f,
					m, n;
				c(h ? a.yep : a.nope, !!i), i && c(i)
			}
			var i, j, l = this.yepnope.loader;
			if (e(a)) g(a, 0, l, 0);
			else if (w(a))
				for (i = 0; i < a.length; i++) j = a[i], e(j) ? g(j, 0, l, 0) : w(j) ? B(j) : Object(j) === j && h(j, l);
			else Object(a) === a && h(a, l)
		}, B.addPrefix = function(a, b) {
			z[a] = b
		}, B.addFilter = function(a) {
			x.push(a)
		}, B.errorTimeout = 1e4, null == b.readyState && b.addEventListener && (b.readyState = "loading", b.addEventListener(
			"DOMContentLoaded", A = function() {
				b.removeEventListener("DOMContentLoaded", A, 0), b.readyState = "complete"
			}, 0)), a.yepnope = k(), a.yepnope.executeStack = h, a.yepnope.injectJs = function(a, c, d, e, i, j) {
			var k = b.createElement("script"),
				l, o, e = e || B.errorTimeout;
			k.src = a;
			for (o in d) k.setAttribute(o, d[o]);
			c = j ? h : c || f, k.onreadystatechange = k.onload = function() {
				!l && g(k.readyState) && (l = 1, c(), k.onload = k.onreadystatechange = null)
			}, m(function() {
				l || (l = 1, c(1))
			}, e), i ? k.onload() : n.parentNode.insertBefore(k, n)
		}, a.yepnope.injectCss = function(a, c, d, e, g, i) {
			var e = b.createElement("link"),
				j, c = i ? h : c || f;
			e.href = a, e.rel = "stylesheet", e.type = "text/css";
			for (j in d) e.setAttribute(j, d[j]);
			g || (n.parentNode.insertBefore(e, n), m(c, 0))
		}
	}(this, document), Modernizr.load = function() {
		yepnope.apply(window, [].slice.call(arguments, 0))
	};
/*formValidation.min.js*/
/*!
 * FormValidation (http://formvalidation.io)
 * The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
 *
 * @version     v0.6.2-dev, built on 2015-03-13 8:15:45 AM
 * @author      https://twitter.com/nghuuphuoc
 * @copyright   (c) 2013 - 2015 Nguyen Huu Phuoc
 * @license     http://formvalidation.io/license/
 */
if (window.FormValidation = {
		AddOn: {},
		Framework: {},
		I18n: {},
		Validator: {}
	}, "undefined" == typeof jQuery) throw new Error("FormValidation requires jQuery");
! function(a) {
	var b = a.fn.jquery.split(" ")[0].split(".");
	if (+b[0] < 2 && +b[1] < 9 || 1 === +b[0] && 9 === +b[1] && +b[2] < 1) throw new Error(
		"FormValidation requires jQuery version 1.9.1 or higher")
}(jQuery),
function(a) {
	FormValidation.Base = function(b, c, d) {
		this.$form = a(b), this.options = a.extend({}, a.fn.formValidation.DEFAULT_OPTIONS, c), this._namespace = d || "fv",
			this.$invalidFields = a([]), this.$submitButton = null, this.$hiddenButton = null, this.STATUS_NOT_VALIDATED =
			"NOT_VALIDATED", this.STATUS_VALIDATING = "VALIDATING", this.STATUS_INVALID = "INVALID", this.STATUS_VALID =
			"VALID", this.STATUS_IGNORED = "IGNORED";
		var e = function() {
				for (var a = 3, b = document.createElement("div"), c = b.all || []; b.innerHTML = "<!--[if gt IE " + ++a +
					"]><br><![endif]-->", c[0];);
				return a > 4 ? a : !a
			}(),
			f = document.createElement("div");
		this._changeEvent = 9 !== e && "oninput" in f ? "input" : "keyup", this._submitIfValid = null, this._cacheFields = {},
			this._init()
	}, FormValidation.Base.prototype = {
		constructor: FormValidation.Base,
		_exceedThreshold: function(b) {
			var c = this._namespace,
				d = b.attr("data-" + c + "-field"),
				e = this.options.fields[d].threshold || this.options.threshold;
			if (!e) return !0;
			var f = -1 !== a.inArray(b.attr("type"), ["button", "checkbox", "file", "hidden", "image", "radio", "reset",
				"submit"
			]);
			return f || b.val().length >= e
		},
		_init: function() {
			var b = this,
				c = this._namespace,
				d = {
					addOns: {},
					autoFocus: this.$form.attr("data-" + c + "-autofocus"),
					button: {
						selector: this.$form.attr("data-" + c + "-button-selector") || this.$form.attr("data-" + c + "-submitbuttons"),
						disabled: this.$form.attr("data-" + c + "-button-disabled")
					},
					control: {
						valid: this.$form.attr("data-" + c + "-control-valid"),
						invalid: this.$form.attr("data-" + c + "-control-invalid")
					},
					err: {
						clazz: this.$form.attr("data-" + c + "-err-clazz"),
						container: this.$form.attr("data-" + c + "-err-container") || this.$form.attr("data-" + c + "-container"),
						parent: this.$form.attr("data-" + c + "-err-parent")
					},
					events: {
						formInit: this.$form.attr("data-" + c + "-events-form-init"),
						formError: this.$form.attr("data-" + c + "-events-form-error"),
						formSuccess: this.$form.attr("data-" + c + "-events-form-success"),
						fieldAdded: this.$form.attr("data-" + c + "-events-field-added"),
						fieldRemoved: this.$form.attr("data-" + c + "-events-field-removed"),
						fieldInit: this.$form.attr("data-" + c + "-events-field-init"),
						fieldError: this.$form.attr("data-" + c + "-events-field-error"),
						fieldSuccess: this.$form.attr("data-" + c + "-events-field-success"),
						fieldStatus: this.$form.attr("data-" + c + "-events-field-status"),
						localeChanged: this.$form.attr("data-" + c + "-events-locale-changed"),
						validatorError: this.$form.attr("data-" + c + "-events-validator-error"),
						validatorSuccess: this.$form.attr("data-" + c + "-events-validator-success"),
						validatorIgnored: this.$form.attr("data-" + c + "-events-validator-ignored")
					},
					excluded: this.$form.attr("data-" + c + "-excluded"),
					icon: {
						valid: this.$form.attr("data-" + c + "-icon-valid") || this.$form.attr("data-" + c + "-feedbackicons-valid"),
						invalid: this.$form.attr("data-" + c + "-icon-invalid") || this.$form.attr("data-" + c +
							"-feedbackicons-invalid"),
						validating: this.$form.attr("data-" + c + "-icon-validating") || this.$form.attr("data-" + c +
							"-feedbackicons-validating"),
						feedback: this.$form.attr("data-" + c + "-icon-feedback")
					},
					live: this.$form.attr("data-" + c + "-live"),
					locale: this.$form.attr("data-" + c + "-locale"),
					message: this.$form.attr("data-" + c + "-message"),
					onError: this.$form.attr("data-" + c + "-onerror"),
					onSuccess: this.$form.attr("data-" + c + "-onsuccess"),
					row: {
						selector: this.$form.attr("data-" + c + "-row-selector") || this.$form.attr("data-" + c + "-group"),
						valid: this.$form.attr("data-" + c + "-row-valid"),
						invalid: this.$form.attr("data-" + c + "-row-invalid"),
						feedback: this.$form.attr("data-" + c + "-row-feedback")
					},
					threshold: this.$form.attr("data-" + c + "-threshold"),
					trigger: this.$form.attr("data-" + c + "-trigger"),
					verbose: this.$form.attr("data-" + c + "-verbose"),
					fields: {}
				};
			this.$form.attr("novalidate", "novalidate").addClass(this.options.elementClass).on("submit." + c, function(a) {
					a.preventDefault(), b.validate()
				}).on("click." + c, this.options.button.selector, function() {
					b.$submitButton = a(this), b._submitIfValid = !0
				}), (this.options.declarative === !0 || "true" === this.options.declarative) && this.$form.find("[name], [data-" +
					c + "-field]").each(function() {
					var e = a(this),
						f = e.attr("name") || e.attr("data-" + c + "-field"),
						g = b._parseOptions(e);
					g && (e.attr("data-" + c + "-field", f), d.fields[f] = a.extend({}, g, d.fields[f]))
				}), this.options = a.extend(!0, this.options, d), "string" == typeof this.options.err.parent && (this.options.err
					.parent = new RegExp(this.options.err.parent)), this.options.container && (this.options.err.container = this.options
					.container, delete this.options.container), this.options.feedbackIcons && (this.options.icon = a.extend(!0, this
					.options.icon, this.options.feedbackIcons), delete this.options.feedbackIcons), this.options.group && (this.options
					.row.selector = this.options.group, delete this.options.group), this.options.submitButtons && (this.options.button
					.selector = this.options.submitButtons, delete this.options.submitButtons), FormValidation.I18n[this.options.locale] ||
				(this.options.locale = a.fn.formValidation.DEFAULT_OPTIONS.locale), (this.options.declarative === !0 || "true" ===
					this.options.declarative) && (this.options = a.extend(!0, this.options, {
					addOns: this._parseAddOnOptions()
				})), this.$hiddenButton = a("<button/>").attr("type", "submit").prependTo(this.$form).addClass("fv-hidden-submit")
				.css({
					display: "none",
					width: 0,
					height: 0
				}), this.$form.on("click." + this._namespace, '[type="submit"]', function(c) {
					if (!c.isDefaultPrevented()) {
						var d = a(c.target),
							e = d.is('[type="submit"]') ? d.eq(0) : d.parent('[type="submit"]').eq(0);
						!b.options.button.selector || e.is(b.options.button.selector) || e.is(b.$hiddenButton) || b.$form.off(
							"submit." + b._namespace).submit()
					}
				});
			for (var e in this.options.fields) this._initField(e);
			for (var f in this.options.addOns) "function" == typeof FormValidation.AddOn[f].init && FormValidation.AddOn[f].init(
				this, this.options.addOns[f]);
			this.$form.trigger(a.Event(this.options.events.formInit), {
				bv: this,
				fv: this,
				options: this.options
			}), this.options.onSuccess && this.$form.on(this.options.events.formSuccess, function(a) {
				FormValidation.Helper.call(b.options.onSuccess, [a])
			}), this.options.onError && this.$form.on(this.options.events.formError, function(a) {
				FormValidation.Helper.call(b.options.onError, [a])
			})
		},
		_initField: function(b) {
			var c = this._namespace,
				d = a([]);
			switch (typeof b) {
				case "object":
					d = b, b = b.attr("data-" + c + "-field");
					break;
				case "string":
					d = this.getFieldElements(b), d.attr("data-" + c + "-field", b)
			}
			if (0 !== d.length && null !== this.options.fields[b] && null !== this.options.fields[b].validators) {
				var e;
				for (e in this.options.fields[b].validators) FormValidation.Validator[e] || delete this.options.fields[b].validators[
					e];
				null === this.options.fields[b].enabled && (this.options.fields[b].enabled = !0);
				for (var f = this, g = d.length, h = d.attr("type"), i = 1 === g || "radio" === h || "checkbox" === h, j = this._getFieldTrigger(
						d.eq(0)), k = a.map(j, function(a) {
						return a + ".update." + c
					}).join(" "), l = 0; g > l; l++) {
					var m = d.eq(l),
						n = this.options.fields[b].row || this.options.row.selector,
						o = m.closest(n),
						p = "function" == typeof(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container) ?
						(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container).call(this, m,
							this) : this.options.fields[b].container || this.options.fields[b].err || this.options.err.container,
						q = p && "tooltip" !== p && "popover" !== p ? a(p) : this._getMessageContainer(m, n);
					p && "tooltip" !== p && "popover" !== p && q.addClass(this.options.err.clazz), q.find("." + this.options.err.clazz
						.split(" ").join(".") + "[data-" + c + "-validator][data-" + c + '-for="' + b + '"]').remove(), o.find(
						"i[data-" + c + '-icon-for="' + b + '"]').remove(), m.off(k).on(k, function() {
						f.updateStatus(a(this), f.STATUS_NOT_VALIDATED)
					}), m.data(c + ".messages", q);
					for (e in this.options.fields[b].validators) m.data(c + ".result." + e, this.STATUS_NOT_VALIDATED), i && l !==
						g - 1 || a("<small/>").css("display", "none").addClass(this.options.err.clazz).attr("data-" + c + "-validator",
							e).attr("data-" + c + "-for", b).attr("data-" + c + "-result", this.STATUS_NOT_VALIDATED).html(this._getMessage(
							b, e)).appendTo(q), "function" == typeof FormValidation.Validator[e].init && FormValidation.Validator[e].init(
							this, m, this.options.fields[b].validators[e]);
					if (this.options.fields[b].icon !== !1 && "false" !== this.options.fields[b].icon && this.options.icon && this.options
						.icon.valid && this.options.icon.invalid && this.options.icon.validating && (!i || l === g - 1)) {
						o.addClass(this.options.row.feedback);
						var r = a("<i/>").css("display", "none").addClass(this.options.icon.feedback).attr("data-" + c + "-icon-for", b)
							.insertAfter(m);
						(i ? d : m).data(c + ".icon", r), ("tooltip" === p || "popover" === p) && ((i ? d : m).on(this.options.events.fieldError,
							function() {
								o.addClass("fv-has-tooltip")
							}).on(this.options.events.fieldSuccess, function() {
							o.removeClass("fv-has-tooltip")
						}), m.off("focus.container." + c).on("focus.container." + c, function() {
							f._showTooltip(m, p)
						}).off("blur.container." + c).on("blur.container." + c, function() {
							f._hideTooltip(m, p)
						})), "string" == typeof this.options.fields[b].icon && "true" !== this.options.fields[b].icon ? r.appendTo(a(
							this.options.fields[b].icon)) : this._fixIcon(m, r)
					}
				}
				d.on(this.options.events.fieldSuccess, function(a, b) {
					var c = f.getOptions(b.field, null, "onSuccess");
					c && FormValidation.Helper.call(c, [a, b])
				}).on(this.options.events.fieldError, function(a, b) {
					var c = f.getOptions(b.field, null, "onError");
					c && FormValidation.Helper.call(c, [a, b])
				}).on(this.options.events.fieldStatus, function(a, b) {
					var c = f.getOptions(b.field, null, "onStatus");
					c && FormValidation.Helper.call(c, [a, b])
				}).on(this.options.events.validatorError, function(a, b) {
					var c = f.getOptions(b.field, b.validator, "onError");
					c && FormValidation.Helper.call(c, [a, b])
				}).on(this.options.events.validatorSuccess, function(a, b) {
					var c = f.getOptions(b.field, b.validator, "onSuccess");
					c && FormValidation.Helper.call(c, [a, b])
				}), this.onLiveChange(d, "live", function() {
					f._exceedThreshold(a(this)) && f.validateField(a(this))
				}), d.trigger(a.Event(this.options.events.fieldInit), {
					bv: this,
					fv: this,
					field: b,
					element: d
				})
			}
		},
		_isExcluded: function(b) {
			var c = this._namespace,
				d = b.attr("data-" + c + "-excluded"),
				e = b.attr("data-" + c + "-field") || b.attr("name");
			switch (!0) {
				case !!e && this.options.fields && this.options.fields[e] && ("true" === this.options.fields[e].excluded || this.options
					.fields[e].excluded === !0):
				case "true" === d:
				case "" === d:
					return !0;
				case !!e && this.options.fields && this.options.fields[e] && ("false" === this.options.fields[e].excluded || this
					.options.fields[e].excluded === !1):
				case "false" === d:
					return !1;
				case !!e && this.options.fields && this.options.fields[e] && "function" == typeof this.options.fields[e].excluded:
					return this.options.fields[e].excluded.call(this, b, this);
				case !!e && this.options.fields && this.options.fields[e] && "string" == typeof this.options.fields[e].excluded:
				case d:
					return FormValidation.Helper.call(this.options.fields[e].excluded, [b, this]);
				default:
					if (this.options.excluded) {
						"string" == typeof this.options.excluded && (this.options.excluded = a.map(this.options.excluded.split(","),
							function(b) {
								return a.trim(b)
							}));
						for (var f = this.options.excluded.length, g = 0; f > g; g++)
							if ("string" == typeof this.options.excluded[g] && b.is(this.options.excluded[g]) || "function" == typeof this
								.options.excluded[g] && this.options.excluded[g].call(this, b, this) === !0) return !0
					}
					return !1
			}
		},
		_getFieldTrigger: function(a) {
			var b = this._namespace,
				c = a.data(b + ".trigger");
			if (c) return c;
			var d = a.attr("type"),
				e = a.attr("data-" + b + "-field"),
				f = "radio" === d || "checkbox" === d || "file" === d || "SELECT" === a.get(0).tagName ? "change" : this._changeEvent;
			return c = ((this.options.fields[e] ? this.options.fields[e].trigger : null) || this.options.trigger || f).split(
				" "), a.data(b + ".trigger", c), c
		},
		_getMessage: function(a, b) {
			if (!(this.options.fields[a] && FormValidation.Validator[b] && this.options.fields[a].validators && this.options.fields[
					a].validators[b])) return "";
			switch (!0) {
				case !!this.options.fields[a].validators[b].message:
					return this.options.fields[a].validators[b].message;
				case !!this.options.fields[a].message:
					return this.options.fields[a].message;
				case !!FormValidation.I18n[this.options.locale] && !!FormValidation.I18n[this.options.locale][b] && !!
				FormValidation.I18n[this.options.locale][b]["default"]:
					return FormValidation.I18n[this.options.locale][b]["default"];
				default:
					return this.options.message
			}
		},
		_getMessageContainer: function(a, b) {
			if (!this.options.err.parent) throw new Error("The err.parent option is not defined");
			var c = a.parent();
			if (c.is(b)) return c;
			var d = c.attr("class");
			return d && this.options.err.parent.test(d) ? c : this._getMessageContainer(c, b)
		},
		_parseAddOnOptions: function() {
			var a = this._namespace,
				b = this.$form.attr("data-" + a + "-addons"),
				c = this.options.addOns || {};
			if (b) {
				b = b.replace(/\s/g, "").split(",");
				for (var d = 0; d < b.length; d++) c[b[d]] || (c[b[d]] = {})
			}
			var e, f, g, h;
			for (e in c)
				if (FormValidation.AddOn[e]) {
					if (f = FormValidation.AddOn[e].html5Attributes)
						for (g in f) h = this.$form.attr("data-" + a + "-addons-" + e.toLowerCase() + "-" + g.toLowerCase()), h && (c[e]
							[f[g]] = h)
				} else delete c[e];
			return c
		},
		_parseOptions: function(b) {
			var c, d, e, f, g, h, i, j, k, l = this._namespace,
				m = b.attr("name") || b.attr("data-" + l + "-field"),
				n = {};
			for (d in FormValidation.Validator)
				if (c = FormValidation.Validator[d], e = "data-" + l + "-" + d.toLowerCase(), f = b.attr(e) + "", k = "function" ==
					typeof c.enableByHtml5 ? c.enableByHtml5(b) : null, k && "false" !== f || k !== !0 && ("" === f || "true" === f ||
						e === f.toLowerCase())) {
					c.html5Attributes = a.extend({}, {
						message: "message",
						onerror: "onError",
						onsuccess: "onSuccess",
						transformer: "transformer"
					}, c.html5Attributes), n[d] = a.extend({}, k === !0 ? {} : k, n[d]);
					for (j in c.html5Attributes) g = c.html5Attributes[j], h = "data-" + l + "-" + d.toLowerCase() + "-" + j, i = b.attr(
						h), i && ("true" === i || h === i.toLowerCase() ? i = !0 : "false" === i && (i = !1), n[d][g] = i)
				} var o = {
					autoFocus: b.attr("data-" + l + "-autofocus"),
					err: b.attr("data-" + l + "-err-container") || b.attr("data-" + l + "-container"),
					excluded: b.attr("data-" + l + "-excluded"),
					icon: b.attr("data-" + l + "-icon") || b.attr("data-" + l + "-feedbackicons") || (this.options.fields && this.options
						.fields[m] ? this.options.fields[m].feedbackIcons : null),
					message: b.attr("data-" + l + "-message"),
					onError: b.attr("data-" + l + "-onerror"),
					onStatus: b.attr("data-" + l + "-onstatus"),
					onSuccess: b.attr("data-" + l + "-onsuccess"),
					row: b.attr("data-" + l + "-row") || b.attr("data-" + l + "-group") || (this.options.fields && this.options.fields[
						m] ? this.options.fields[m].group : null),
					selector: b.attr("data-" + l + "-selector"),
					threshold: b.attr("data-" + l + "-threshold"),
					transformer: b.attr("data-" + l + "-transformer"),
					trigger: b.attr("data-" + l + "-trigger"),
					verbose: b.attr("data-" + l + "-verbose"),
					validators: n
				},
				p = a.isEmptyObject(o),
				q = a.isEmptyObject(n);
			return !q || !p && this.options.fields && this.options.fields[m] ? (o.validators = n, o) : null
		},
		_submit: function() {
			var b = this.isValid();
			if (null !== b) {
				var c = b ? this.options.events.formSuccess : this.options.events.formError,
					d = a.Event(c);
				this.$form.trigger(d), this.$submitButton && (b ? this._onSuccess(d) : this._onError(d))
			}
		},
		_onError: function(b) {
			if (!b.isDefaultPrevented()) {
				if ("submitted" === this.options.live) {
					this.options.live = "enabled";
					var c = this;
					for (var d in this.options.fields) ! function(b) {
						var d = c.getFieldElements(b);
						d.length && c.onLiveChange(d, "live", function() {
							c._exceedThreshold(a(this)) && c.validateField(a(this))
						})
					}(d)
				}
				for (var e = this._namespace, f = 0; f < this.$invalidFields.length; f++) {
					var g = this.$invalidFields.eq(f),
						h = this.isOptionEnabled(g.attr("data-" + e + "-field"), "autoFocus");
					if (h) {
						g.focus();
						break
					}
				}
			}
		},
		_onFieldValidated: function(b, c) {
			var d = this._namespace,
				e = b.attr("data-" + d + "-field"),
				f = this.options.fields[e].validators,
				g = {},
				h = 0,
				i = {
					bv: this,
					fv: this,
					field: e,
					element: b,
					validator: c,
					result: b.data(d + ".response." + c)
				};
			if (c) switch (b.data(d + ".result." + c)) {
				case this.STATUS_INVALID:
					b.trigger(a.Event(this.options.events.validatorError), i);
					break;
				case this.STATUS_VALID:
					b.trigger(a.Event(this.options.events.validatorSuccess), i);
					break;
				case this.STATUS_IGNORED:
					b.trigger(a.Event(this.options.events.validatorIgnored), i)
			}
			g[this.STATUS_NOT_VALIDATED] = 0, g[this.STATUS_VALIDATING] = 0, g[this.STATUS_INVALID] = 0, g[this.STATUS_VALID] =
				0, g[this.STATUS_IGNORED] = 0;
			for (var j in f)
				if (f[j].enabled !== !1) {
					h++;
					var k = b.data(d + ".result." + j);
					k && g[k]++
				} g[this.STATUS_VALID] + g[this.STATUS_IGNORED] === h ? (this.$invalidFields = this.$invalidFields.not(b), b.trigger(
				a.Event(this.options.events.fieldSuccess), i)) : (0 === g[this.STATUS_NOT_VALIDATED] || !this.isOptionEnabled(e,
				"verbose")) && 0 === g[this.STATUS_VALIDATING] && g[this.STATUS_INVALID] > 0 && (this.$invalidFields = this.$invalidFields
				.add(b), b.trigger(a.Event(this.options.events.fieldError), i))
		},
		_onSuccess: function(a) {
			a.isDefaultPrevented() || this.disableSubmitButtons(!0).defaultSubmit()
		},
		_fixIcon: function() {},
		_createTooltip: function() {},
		_destroyTooltip: function() {},
		_hideTooltip: function() {},
		_showTooltip: function() {},
		defaultSubmit: function() {
			var b = this._namespace;
			this.$submitButton && a("<input/>").attr({
				type: "hidden",
				name: this.$submitButton.attr("name")
			}).attr("data-" + b + "-submit-hidden", "").val(this.$submitButton.val()).appendTo(this.$form), this.$form.off(
				"submit." + b).submit()
		},
		disableSubmitButtons: function(a) {
			return a ? "disabled" !== this.options.live && this.$form.find(this.options.button.selector).attr("disabled",
				"disabled").addClass(this.options.button.disabled) : this.$form.find(this.options.button.selector).removeAttr(
				"disabled").removeClass(this.options.button.disabled), this
		},
		getFieldElements: function(b) {
			if (!this._cacheFields[b])
				if (this.options.fields[b] && this.options.fields[b].selector) {
					var c = this.$form.find(this.options.fields[b].selector);
					this._cacheFields[b] = c.length ? c : a(this.options.fields[b].selector)
				} else this._cacheFields[b] = this.$form.find('[name="' + b + '"]');
			return this._cacheFields[b]
		},
		getFieldValue: function(a, b) {
			var c, d = this._namespace;
			if ("string" == typeof a) {
				if (c = this.getFieldElements(a), 0 === c.length) return null
			} else c = a, a = c.attr("data-" + d + "-field");
			if (!a || !this.options.fields[a]) return c.val();
			var e = (this.options.fields[a].validators && this.options.fields[a].validators[b] ? this.options.fields[a].validators[
				b].transformer : null) || this.options.fields[a].transformer;
			return e ? FormValidation.Helper.call(e, [c, b, this]) : c.val()
		},
		getNamespace: function() {
			return this._namespace
		},
		getOptions: function(a, b, c) {
			var d = this._namespace;
			if (!a) return c ? this.options[c] : this.options;
			if ("object" == typeof a && (a = a.attr("data-" + d + "-field")), !this.options.fields[a]) return null;
			var e = this.options.fields[a];
			return b ? e.validators && e.validators[b] ? c ? e.validators[b][c] : e.validators[b] : null : c ? e[c] : e
		},
		getStatus: function(a, b) {
			var c = this._namespace;
			switch (typeof a) {
				case "object":
					return a.data(c + ".result." + b);
				case "string":
				default:
					return this.getFieldElements(a).eq(0).data(c + ".result." + b)
			}
		},
		isOptionEnabled: function(a, b) {
			return !this.options.fields[a] || "true" !== this.options.fields[a][b] && this.options.fields[a][b] !== !0 ? !this
				.options.fields[a] || "false" !== this.options.fields[a][b] && this.options.fields[a][b] !== !1 ? "true" === this
				.options[b] || this.options[b] === !0 : !1 : !0
		},
		isValid: function() {
			for (var a in this.options.fields) {
				var b = this.isValidField(a);
				if (null === b) return null;
				if (b === !1) return !1
			}
			return !0
		},
		isValidContainer: function(b) {
			var c = this,
				d = this._namespace,
				e = [],
				f = "string" == typeof b ? a(b) : b;
			if (0 === f.length) return !0;
			f.find("[data-" + d + "-field]").each(function() {
				var b = a(this);
				c._isExcluded(b) || e.push(b)
			});
			for (var g = e.length, h = 0; g > h; h++) {
				var i = e[h],
					j = i.attr("data-" + d + "-field"),
					k = i.data(d + ".messages").find("." + this.options.err.clazz.split(" ").join(".") + "[data-" + d +
						"-validator][data-" + d + '-for="' + j + '"]');
				if (k.filter("[data-" + d + '-result="' + this.STATUS_INVALID + '"]').length > 0) return !1;
				if (k.filter("[data-" + d + '-result="' + this.STATUS_NOT_VALIDATED + '"]').length > 0 || k.filter("[data-" + d +
						'-result="' + this.STATUS_VALIDATING + '"]').length > 0) return null
			}
			return !0
		},
		isValidField: function(b) {
			var c = this._namespace,
				d = a([]);
			switch (typeof b) {
				case "object":
					d = b, b = b.attr("data-" + c + "-field");
					break;
				case "string":
					d = this.getFieldElements(b)
			}
			if (0 === d.length || !this.options.fields[b] || this.options.fields[b].enabled === !1) return !0;
			for (var e, f, g, h = d.attr("type"), i = "radio" === h || "checkbox" === h ? 1 : d.length, j = 0; i > j; j++)
				if (e = d.eq(j), !this._isExcluded(e))
					for (f in this.options.fields[b].validators)
						if (this.options.fields[b].validators[f].enabled !== !1) {
							if (g = e.data(c + ".result." + f), g === this.STATUS_VALIDATING || g === this.STATUS_NOT_VALIDATED) return null;
							if (g === this.STATUS_INVALID) return !1
						} return !0
		},
		offLiveChange: function(b, c) {
			if (null === b || 0 === b.length) return this;
			var d = this._namespace,
				e = this._getFieldTrigger(b.eq(0)),
				f = a.map(e, function(a) {
					return a + "." + c + "." + d
				}).join(" ");
			return b.off(f), this
		},
		onLiveChange: function(b, c, d) {
			if (null === b || 0 === b.length) return this;
			var e = this._namespace,
				f = this._getFieldTrigger(b.eq(0)),
				g = a.map(f, function(a) {
					return a + "." + c + "." + e
				}).join(" ");
			switch (this.options.live) {
				case "submitted":
					break;
				case "disabled":
					b.off(g);
					break;
				case "enabled":
				default:
					b.off(g).on(g, function() {
						d.apply(this, arguments)
					})
			}
			return this
		},
		updateMessage: function(b, c, d) {
			var e = this,
				f = this._namespace,
				g = a([]);
			switch (typeof b) {
				case "object":
					g = b, b = b.attr("data-" + f + "-field");
					break;
				case "string":
					g = this.getFieldElements(b)
			}
			return g.each(function() {
				a(this).data(f + ".messages").find("." + e.options.err.clazz + "[data-" + f + '-validator="' + c + '"][data-' +
					f + '-for="' + b + '"]').html(d)
			}), this
		},
		updateStatus: function(b, c, d) {
			var e = this._namespace,
				f = a([]);
			switch (typeof b) {
				case "object":
					f = b, b = b.attr("data-" + e + "-field");
					break;
				case "string":
					f = this.getFieldElements(b)
			}
			if (!b || !this.options.fields[b]) return this;
			c === this.STATUS_NOT_VALIDATED && (this._submitIfValid = !1);
			for (var g = this, h = f.attr("type"), i = this.options.fields[b].row || this.options.row.selector, j = "radio" ===
					h || "checkbox" === h ? 1 : f.length, k = 0; j > k; k++) {
				var l = f.eq(k);
				if (!this._isExcluded(l)) {
					var m, n, o = l.closest(i),
						p = l.data(e + ".messages"),
						q = p.find("." + this.options.err.clazz.split(" ").join(".") + "[data-" + e + "-validator][data-" + e +
							'-for="' + b + '"]'),
						r = d ? q.filter("[data-" + e + '-validator="' + d + '"]') : q,
						s = l.data(e + ".icon"),
						t = "function" == typeof(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container) ?
						(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container).call(this, l,
							this) : this.options.fields[b].container || this.options.fields[b].err || this.options.err.container,
						u = null;
					if (d) l.data(e + ".result." + d, c);
					else
						for (var v in this.options.fields[b].validators) l.data(e + ".result." + v, c);
					switch (r.attr("data-" + e + "-result", c), c) {
						case this.STATUS_VALIDATING:
							u = null, this.disableSubmitButtons(!0), l.removeClass(this.options.control.valid).removeClass(this.options.control
								.invalid), o.removeClass(this.options.row.valid).removeClass(this.options.row.invalid), s && s.removeClass(
								this.options.icon.valid).removeClass(this.options.icon.invalid).addClass(this.options.icon.validating).show();
							break;
						case this.STATUS_INVALID:
							u = !1, this.disableSubmitButtons(!0), l.removeClass(this.options.control.valid).addClass(this.options.control
								.invalid), o.removeClass(this.options.row.valid).addClass(this.options.row.invalid), s && s.removeClass(this
								.options.icon.valid).removeClass(this.options.icon.validating).addClass(this.options.icon.invalid).show();
							break;
						case this.STATUS_VALID:
						case this.STATUS_IGNORED:
							m = q.filter("[data-" + e + '-result="' + this.STATUS_VALIDATING + '"]').length > 0, n = q.filter("[data-" + e +
									'-result="' + this.STATUS_NOT_VALIDATED + '"]').length > 0, u = m || n ? null : q.filter("[data-" + e +
									'-result="' + this.STATUS_VALID + '"]').length + q.filter("[data-" + e + '-result="' + this.STATUS_IGNORED +
									'"]').length === q.length, l.removeClass(this.options.control.valid).removeClass(this.options.control.invalid),
								u === !0 ? (this.disableSubmitButtons(this.isValid() === !1), c === this.STATUS_VALID && l.addClass(this.options
									.control.valid)) : u === !1 && (this.disableSubmitButtons(!0), c === this.STATUS_VALID && l.addClass(this.options
									.control.invalid)), s && (s.removeClass(this.options.icon.invalid).removeClass(this.options.icon.validating)
									.removeClass(this.options.icon.valid), c === this.STATUS_VALID && s.addClass(null === u ? "" : u ? this.options
										.icon.valid : m ? this.options.icon.validating : this.options.icon.invalid).show());
							var w = this.isValidContainer(o);
							null !== w && (o.removeClass(this.options.row.valid).removeClass(this.options.row.invalid), (c === this.STATUS_VALID ||
								q.length > 1) && o.addClass(w ? this.options.row.valid : this.options.row.invalid));
							break;
						case this.STATUS_NOT_VALIDATED:
						default:
							u = null, this.disableSubmitButtons(!1), l.removeClass(this.options.control.valid).removeClass(this.options.control
								.invalid), o.removeClass(this.options.row.valid).removeClass(this.options.row.invalid), s && s.removeClass(
								this.options.icon.valid).removeClass(this.options.icon.invalid).removeClass(this.options.icon.validating).hide()
					}!s || "tooltip" !== t && "popover" !== t ? c === this.STATUS_INVALID ? r.show() : r.hide() : u === !1 ? this._createTooltip(
							l, q.filter("[data-" + e + '-result="' + g.STATUS_INVALID + '"]').eq(0).html(), t) : this._destroyTooltip(l, t),
						l.trigger(a.Event(this.options.events.fieldStatus), {
							bv: this,
							fv: this,
							field: b,
							element: l,
							status: c
						}), this._onFieldValidated(l, d)
				}
			}
			return this
		},
		validate: function() {
			if (a.isEmptyObject(this.options.fields)) return this._submit(), this;
			this.disableSubmitButtons(!0), this._submitIfValid = !1;
			for (var b in this.options.fields) this.validateField(b);
			return this._submit(), this._submitIfValid = !0, this
		},
		validateField: function(b) {
			var c = this._namespace,
				d = a([]);
			switch (typeof b) {
				case "object":
					d = b, b = b.attr("data-" + c + "-field");
					break;
				case "string":
					d = this.getFieldElements(b)
			}
			if (0 === d.length || !this.options.fields[b] || this.options.fields[b].enabled === !1) return this;
			for (var e, f, g = this, h = d.attr("type"), i = "radio" === h || "checkbox" === h ? 1 : d.length, j = "radio" ===
					h || "checkbox" === h, k = this.options.fields[b].validators, l = this.isOptionEnabled(b, "verbose"), m = 0; i >
				m; m++) {
				var n = d.eq(m);
				if (!this._isExcluded(n)) {
					var o = !1;
					for (e in k) {
						if (n.data(c + ".dfs." + e) && n.data(c + ".dfs." + e).reject(), o) break;
						var p = n.data(c + ".result." + e);
						if (p !== this.STATUS_VALID && p !== this.STATUS_INVALID)
							if (k[e].enabled !== !1)
								if (n.data(c + ".result." + e, this.STATUS_VALIDATING), f = FormValidation.Validator[e].validate(this, n, k[e]),
									"object" == typeof f && f.resolve) this.updateStatus(j ? b : n, this.STATUS_VALIDATING, e), n.data(c +
									".dfs." + e, f), f.done(function(a, b, d) {
									a.removeData(c + ".dfs." + b).data(c + ".response." + b, d), d.message && g.updateMessage(a, b, d.message),
										g.updateStatus(j ? a.attr("data-" + c + "-field") : a, d.valid === !0 ? g.STATUS_VALID : d.valid === !1 ?
											g.STATUS_INVALID : g.STATUS_IGNORED, b), d.valid && g._submitIfValid === !0 ? g._submit() : d.valid !==
										!1 || l || (o = !0)
								});
								else if ("object" == typeof f && void 0 !== f.valid) {
							if (n.data(c + ".response." + e, f), f.message && this.updateMessage(j ? b : n, e, f.message), this.updateStatus(
									j ? b : n, f.valid === !0 ? this.STATUS_VALID : f.valid === !1 ? this.STATUS_INVALID : this.STATUS_IGNORED,
									e), f.valid === !1 && !l) break
						} else if ("boolean" == typeof f) {
							if (n.data(c + ".response." + e, f), this.updateStatus(j ? b : n, f ? this.STATUS_VALID : this.STATUS_INVALID,
									e), !f && !l) break
						} else(null === f || void 0 === f) && (n.data(c + ".response." + e, f), this.updateStatus(j ? b : n, this.STATUS_IGNORED,
							e));
						else this.updateStatus(j ? b : n, this.STATUS_VALID, e);
						else this._onFieldValidated(n, e)
					}
				}
			}
			return this
		},
		addField: function(b, c) {
			var d = this._namespace,
				e = a([]);
			switch (typeof b) {
				case "object":
					e = b, b = b.attr("data-" + d + "-field") || b.attr("name");
					break;
				case "string":
					delete this._cacheFields[b], e = this.getFieldElements(b)
			}
			e.attr("data-" + d + "-field", b);
			for (var f = e.attr("type"), g = "radio" === f || "checkbox" === f ? 1 : e.length, h = 0; g > h; h++) {
				var i = e.eq(h),
					j = this._parseOptions(i);
				j = null === j ? c : a.extend(!0, j, c), this.options.fields[b] = a.extend(!0, this.options.fields[b], j), this._cacheFields[
					b] = this._cacheFields[b] ? this._cacheFields[b].add(i) : i, this._initField("checkbox" === f || "radio" === f ?
					b : i)
			}
			return this.disableSubmitButtons(!1), this.$form.trigger(a.Event(this.options.events.fieldAdded), {
				field: b,
				element: e,
				options: this.options.fields[b]
			}), this
		},
		destroy: function() {
			var a, b, c, d, e, f, g, h = this._namespace;
			for (b in this.options.fields)
				for (c = this.getFieldElements(b), a = 0; a < c.length; a++) {
					d = c.eq(a);
					for (e in this.options.fields[b].validators) d.data(h + ".dfs." + e) && d.data(h + ".dfs." + e).reject(), d.removeData(
							h + ".result." + e).removeData(h + ".response." + e).removeData(h + ".dfs." + e), "function" == typeof FormValidation
						.Validator[e].destroy && FormValidation.Validator[e].destroy(this, d, this.options.fields[b].validators[e])
				}
			for (b in this.options.fields)
				for (c = this.getFieldElements(b), g = this.options.fields[b].row || this.options.row.selector, a = 0; a < c.length; a++) {
					d = c.eq(a), d.data(h + ".messages").find("." + this.options.err.clazz.split(" ").join(".") + "[data-" + h +
						"-validator][data-" + h + '-for="' + b + '"]').remove().end().end().removeData(h + ".messages").closest(g).removeClass(
						this.options.row.valid).removeClass(this.options.row.invalid).removeClass(this.options.row.feedback).end().off(
						"." + h).removeAttr("data-" + h + "-field");
					var i = "function" == typeof(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container) ?
						(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container).call(this, d,
							this) : this.options.fields[b].container || this.options.fields[b].err || this.options.err.container;
					("tooltip" === i || "popover" === i) && this._destroyTooltip(d, i), f = d.data(h + ".icon"), f && f.remove(), d.removeData(
						h + ".icon").removeData(h + ".trigger")
				}
			for (var j in this.options.addOns) "function" == typeof FormValidation.AddOn[j].destroy && FormValidation.AddOn[j]
				.destroy(this, this.options.addOns[j]);
			this.disableSubmitButtons(!1), this.$hiddenButton.remove(), this.$form.removeClass(this.options.elementClass).off(
					"." + h).removeData("bootstrapValidator").removeData("formValidation").find("[data-" + h + "-submit-hidden]").remove()
				.end().find('[type="submit"]').off("click." + h)
		},
		enableFieldValidators: function(a, b, c) {
			var d = this.options.fields[a].validators;
			if (c && d && d[c] && d[c].enabled !== b) this.options.fields[a].validators[c].enabled = b, this.updateStatus(a,
				this.STATUS_NOT_VALIDATED, c);
			else if (!c && this.options.fields[a].enabled !== b) {
				this.options.fields[a].enabled = b;
				for (var e in d) this.enableFieldValidators(a, b, e)
			}
			return this
		},
		getDynamicOption: function(a, b) {
			var c = "string" == typeof a ? this.getFieldElements(a) : a,
				d = c.val();
			if ("function" == typeof b) return FormValidation.Helper.call(b, [d, this, c]);
			if ("string" == typeof b) {
				var e = this.getFieldElements(b);
				return e.length ? e.val() : FormValidation.Helper.call(b, [d, this, c]) || b
			}
			return null
		},
		getForm: function() {
			return this.$form
		},
		getInvalidFields: function() {
			return this.$invalidFields
		},
		getLocale: function() {
			return this.options.locale
		},
		getMessages: function(b, c) {
			var d = this,
				e = this._namespace,
				f = [],
				g = a([]);
			switch (!0) {
				case b && "object" == typeof b:
					g = b;
					break;
				case b && "string" == typeof b:
					var h = this.getFieldElements(b);
					if (h.length > 0) {
						var i = h.attr("type");
						g = "radio" === i || "checkbox" === i ? h.eq(0) : h
					}
					break;
				default:
					g = this.$invalidFields
			}
			var j = c ? "[data-" + e + '-validator="' + c + '"]' : "";
			return g.each(function() {
				f = f.concat(a(this).data(e + ".messages").find("." + d.options.err.clazz + "[data-" + e + '-for="' + a(this).attr(
					"data-" + e + "-field") + '"][data-' + e + '-result="' + d.STATUS_INVALID + '"]' + j).map(function() {
					var b = a(this).attr("data-" + e + "-validator"),
						c = a(this).attr("data-" + e + "-for");
					return d.options.fields[c].validators[b].enabled === !1 ? "" : a(this).html()
				}).get())
			}), f
		},
		getSubmitButton: function() {
			return this.$submitButton
		},
		removeField: function(b) {
			var c = this._namespace,
				d = a([]);
			switch (typeof b) {
				case "object":
					d = b, b = b.attr("data-" + c + "-field") || b.attr("name"), d.attr("data-" + c + "-field", b);
					break;
				case "string":
					d = this.getFieldElements(b)
			}
			if (0 === d.length) return this;
			for (var e = d.attr("type"), f = "radio" === e || "checkbox" === e ? 1 : d.length, g = 0; f > g; g++) {
				var h = d.eq(g);
				this.$invalidFields = this.$invalidFields.not(h), this._cacheFields[b] = this._cacheFields[b].not(h)
			}
			return this._cacheFields[b] && 0 !== this._cacheFields[b].length || delete this.options.fields[b], ("checkbox" ===
				e || "radio" === e) && this._initField(b), this.disableSubmitButtons(!1), this.$form.trigger(a.Event(this.options
				.events.fieldRemoved), {
				field: b,
				element: d
			}), this
		},
		resetField: function(b, c) {
			var d = this._namespace,
				e = a([]);
			switch (typeof b) {
				case "object":
					e = b, b = b.attr("data-" + d + "-field");
					break;
				case "string":
					e = this.getFieldElements(b)
			}
			var f = e.length;
			if (this.options.fields[b])
				for (var g = 0; f > g; g++)
					for (var h in this.options.fields[b].validators) e.eq(g).removeData(d + ".dfs." + h);
			if (c) {
				var i = e.attr("type");
				"radio" === i || "checkbox" === i ? e.prop("checked", !1).removeAttr("selected") : e.val("")
			}
			return this.updateStatus(b, this.STATUS_NOT_VALIDATED), this
		},
		resetForm: function(b) {
			for (var c in this.options.fields) this.resetField(c, b);
			return this.$invalidFields = a([]), this.$submitButton = null, this.disableSubmitButtons(!1), this
		},
		revalidateField: function(a) {
			return this.updateStatus(a, this.STATUS_NOT_VALIDATED).validateField(a), this
		},
		setLocale: function(b) {
			return this.options.locale = b, this.$form.trigger(a.Event(this.options.events.localeChanged), {
				locale: b,
				bv: this,
				fv: this
			}), this
		},
		updateOption: function(a, b, c, d) {
			var e = this._namespace;
			return "object" == typeof a && (a = a.attr("data-" + e + "-field")), this.options.fields[a] && this.options.fields[
				a].validators[b] && (this.options.fields[a].validators[b][c] = d, this.updateStatus(a, this.STATUS_NOT_VALIDATED,
				b)), this
		},
		validateContainer: function(b) {
			var c = this,
				d = this._namespace,
				e = [],
				f = "string" == typeof b ? a(b) : b;
			if (0 === f.length) return this;
			f.find("[data-" + d + "-field]").each(function() {
				var b = a(this);
				c._isExcluded(b) || e.push(b)
			});
			for (var g = e.length, h = 0; g > h; h++) this.validateField(e[h]);
			return this
		}
	}, a.fn.formValidation = function(b) {
		var c = arguments;
		return this.each(function() {
			var d = a(this),
				e = d.data("formValidation"),
				f = "object" == typeof b && b;
			if (!e) {
				var g = (f.framework || d.attr("data-fv-framework") || "bootstrap").toLowerCase(),
					h = g.substr(0, 1).toUpperCase() + g.substr(1);
				if ("undefined" == typeof FormValidation.Framework[h]) throw new Error("The class FormValidation.Framework." + h +
					" is not implemented");
				e = new FormValidation.Framework[h](this, f), d.addClass("fv-form-" + g).data("formValidation", e)
			}
			"string" == typeof b && e[b].apply(e, Array.prototype.slice.call(c, 1))
		})
	}, a.fn.formValidation.Constructor = FormValidation.Base, a.fn.formValidation.DEFAULT_OPTIONS = {
		autoFocus: !0,
		declarative: !0,
		elementClass: "fv-form",
		events: {
			formInit: "init.form.fv",
			formError: "err.form.fv",
			formSuccess: "success.form.fv",
			fieldAdded: "added.field.fv",
			fieldRemoved: "removed.field.fv",
			fieldInit: "init.field.fv",
			fieldError: "err.field.fv",
			fieldSuccess: "success.field.fv",
			fieldStatus: "status.field.fv",
			localeChanged: "changed.locale.fv",
			validatorError: "err.validator.fv",
			validatorSuccess: "success.validator.fv",
			validatorIgnored: "ignored.validator.fv"
		},
		excluded: [":disabled", ":hidden", ":not(:visible)"],
		fields: null,
		live: "enabled",
		locale: "en_US",
		message: "This value is not valid",
		threshold: null,
		verbose: !0,
		button: {
			selector: '[type="submit"]',
			disabled: ""
		},
		control: {
			valid: "",
			invalid: ""
		},
		err: {
			clazz: "",
			container: null,
			parent: null
		},
		icon: {
			valid: null,
			invalid: null,
			validating: null,
			feedback: ""
		},
		row: {
			selector: null,
			valid: "",
			invalid: "",
			feedback: ""
		}
	}
}(jQuery),
function(a) {
	FormValidation.Helper = {
		call: function(a, b) {
			if ("function" == typeof a) return a.apply(this, b);
			if ("string" == typeof a) {
				"()" === a.substring(a.length - 2) && (a = a.substring(0, a.length - 2));
				for (var c = a.split("."), d = c.pop(), e = window, f = 0; f < c.length; f++) e = e[c[f]];
				return "undefined" == typeof e[d] ? null : e[d].apply(this, b)
			}
		},
		date: function(a, b, c, d) {
			if (isNaN(a) || isNaN(b) || isNaN(c)) return !1;
			if (c.length > 2 || b.length > 2 || a.length > 4) return !1;
			if (c = parseInt(c, 10), b = parseInt(b, 10), a = parseInt(a, 10), 1e3 > a || a > 9999 || 0 >= b || b > 12) return !
				1;
			var e = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
			if ((a % 400 === 0 || a % 100 !== 0 && a % 4 === 0) && (e[1] = 29), 0 >= c || c > e[b - 1]) return !1;
			if (d === !0) {
				var f = new Date,
					g = f.getFullYear(),
					h = f.getMonth(),
					i = f.getDate();
				return g > a || a === g && h > b - 1 || a === g && b - 1 === h && i > c
			}
			return !0
		},
		format: function(b, c) {
			a.isArray(c) || (c = [c]);
			for (var d in c) b = b.replace("%s", c[d]);
			return b
		},
		luhn: function(a) {
			for (var b = a.length, c = 0, d = [
					[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
					[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
				], e = 0; b--;) e += d[c][parseInt(a.charAt(b), 10)], c ^= 1;
			return e % 10 === 0 && e > 0
		},
		mod11And10: function(a) {
			for (var b = 5, c = a.length, d = 0; c > d; d++) b = (2 * (b || 10) % 11 + parseInt(a.charAt(d), 10)) % 10;
			return 1 === b
		},
		mod37And36: function(a, b) {
			b = b || "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
			for (var c = b.length, d = a.length, e = Math.floor(c / 2), f = 0; d > f; f++) e = (2 * (e || c) % (c + 1) + b.indexOf(
				a.charAt(f))) % c;
			return 1 === e
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			base64: {
				"default": "Please enter a valid base 64 encoded"
			}
		}
	}), FormValidation.Validator.base64 = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "base64");
			return "" === c ? !0 : /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/.test(c)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			between: {
				"default": "Please enter a value between %s and %s",
				notInclusive: "Please enter a value between %s and %s strictly"
			}
		}
	}), FormValidation.Validator.between = {
		html5Attributes: {
			message: "message",
			min: "min",
			max: "max",
			inclusive: "inclusive"
		},
		enableByHtml5: function(a) {
			return "range" === a.attr("type") ? {
				min: a.attr("min"),
				max: a.attr("max")
			} : !1
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "between");
			if ("" === e) return !0;
			if (e = this._format(e), !a.isNumeric(e)) return !1;
			var f = b.getLocale(),
				g = a.isNumeric(d.min) ? d.min : b.getDynamicOption(c, d.min),
				h = a.isNumeric(d.max) ? d.max : b.getDynamicOption(c, d.max),
				i = this._format(g),
				j = this._format(h);
			return e = parseFloat(e), d.inclusive === !0 || void 0 === d.inclusive ? {
				valid: e >= i && j >= e,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].between["default"], [g, h])
			} : {
				valid: e > i && j > e,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].between.notInclusive, [g, h])
			}
		},
		_format: function(a) {
			return (a + "").replace(",", ".")
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			bic: {
				"default": "Please enter a valid BIC number"
			}
		}
	}), FormValidation.Validator.bic = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "bic");
			return "" === c ? !0 : /^[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?$/.test(c)
		}
	}
}(jQuery),
function() {
	FormValidation.Validator.blank = {
		validate: function() {
			return !0
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			callback: {
				"default": "Please enter a valid value"
			}
		}
	}), FormValidation.Validator.callback = {
		html5Attributes: {
			message: "message",
			callback: "callback"
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "callback"),
				f = new a.Deferred,
				g = {
					valid: !0
				};
			if (d.callback) {
				var h = FormValidation.Helper.call(d.callback, [e, b, c]);
				g = "boolean" == typeof h || null === h ? {
					valid: h
				} : h
			}
			return f.resolve(c, "callback", g), f
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			choice: {
				"default": "Please enter a valid value",
				less: "Please choose %s options at minimum",
				more: "Please choose %s options at maximum",
				between: "Please choose %s - %s options"
			}
		}
	}), FormValidation.Validator.choice = {
		html5Attributes: {
			message: "message",
			min: "min",
			max: "max"
		},
		validate: function(b, c, d) {
			var e = b.getLocale(),
				f = b.getNamespace(),
				g = c.is("select") ? b.getFieldElements(c.attr("data-" + f + "-field")).find("option").filter(":selected").length :
				b.getFieldElements(c.attr("data-" + f + "-field")).filter(":checked").length,
				h = d.min ? a.isNumeric(d.min) ? d.min : b.getDynamicOption(c, d.min) : null,
				i = d.max ? a.isNumeric(d.max) ? d.max : b.getDynamicOption(c, d.max) : null,
				j = !0,
				k = d.message || FormValidation.I18n[e].choice["default"];
			switch ((h && g < parseInt(h, 10) || i && g > parseInt(i, 10)) && (j = !1), !0) {
				case !!h && !!i:
					k = FormValidation.Helper.format(d.message || FormValidation.I18n[e].choice.between, [parseInt(h, 10), parseInt(
						i, 10)]);
					break;
				case !!h:
					k = FormValidation.Helper.format(d.message || FormValidation.I18n[e].choice.less, parseInt(h, 10));
					break;
				case !!i:
					k = FormValidation.Helper.format(d.message || FormValidation.I18n[e].choice.more, parseInt(i, 10))
			}
			return {
				valid: j,
				message: k
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			color: {
				"default": "Please enter a valid color"
			}
		}
	}), FormValidation.Validator.color = {
		html5Attributes: {
			message: "message",
			type: "type"
		},
		enableByHtml5: function(a) {
			return "color" === a.attr("type")
		},
		SUPPORTED_TYPES: ["hex", "rgb", "rgba", "hsl", "hsla", "keyword"],
		KEYWORD_COLORS: ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black",
			"blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral",
			"cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen",
			"darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon",
			"darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink",
			"deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia",
			"gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "grey", "honeydew", "hotpink",
			"indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue",
			"lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink",
			"lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue",
			"lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid",
			"mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred",
			"midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab",
			"orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip",
			"peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown",
			"salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray",
			"slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise",
			"violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen"
		],
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "color");
			if ("" === e) return !0;
			if (this.enableByHtml5(c)) return /^#[0-9A-F]{6}$/i.test(e);
			var f = d.type || this.SUPPORTED_TYPES;
			a.isArray(f) || (f = f.replace(/s/g, "").split(","));
			for (var g, h, i = !1, j = 0; j < f.length; j++)
				if (h = f[j], g = "_" + h.toLowerCase(), i = i || this[g](e)) return !0;
			return !1
		},
		_hex: function(a) {
			return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a)
		},
		_hsl: function(a) {
			return /^hsl\((\s*(-?\d+)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*)\)$/.test(a)
		},
		_hsla: function(a) {
			return /^hsla\((\s*(-?\d+)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*,){2}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/.test(a)
		},
		_keyword: function(b) {
			return a.inArray(b, this.KEYWORD_COLORS) >= 0
		},
		_rgb: function(a) {
			var b = /^rgb\((\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*,){2}(\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*)\)$/,
				c = /^rgb\((\s*(\b(0?\d{1,2}|100)\b%)\s*,){2}(\s*(\b(0?\d{1,2}|100)\b%)\s*)\)$/;
			return b.test(a) || c.test(a)
		},
		_rgba: function(a) {
			var b = /^rgba\((\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*,){3}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/,
				c = /^rgba\((\s*(\b(0?\d{1,2}|100)\b%)\s*,){3}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/;
			return b.test(a) || c.test(a)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			creditCard: {
				"default": "Please enter a valid credit card number"
			}
		}
	}), FormValidation.Validator.creditCard = {
		validate: function(b, c) {
			var d = b.getFieldValue(c, "creditCard");
			if ("" === d) return !0;
			if (/[^0-9-\s]+/.test(d)) return !1;
			if (d = d.replace(/\D/g, ""), !FormValidation.Helper.luhn(d)) return !1;
			var e, f, g = {
				AMERICAN_EXPRESS: {
					length: [15],
					prefix: ["34", "37"]
				},
				DINERS_CLUB: {
					length: [14],
					prefix: ["300", "301", "302", "303", "304", "305", "36"]
				},
				DINERS_CLUB_US: {
					length: [16],
					prefix: ["54", "55"]
				},
				DISCOVER: {
					length: [16],
					prefix: ["6011", "622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218",
						"62219", "6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921",
						"622922", "622923", "622924", "622925", "644", "645", "646", "647", "648", "649", "65"
					]
				},
				JCB: {
					length: [16],
					prefix: ["3528", "3529", "353", "354", "355", "356", "357", "358"]
				},
				LASER: {
					length: [16, 17, 18, 19],
					prefix: ["6304", "6706", "6771", "6709"]
				},
				MAESTRO: {
					length: [12, 13, 14, 15, 16, 17, 18, 19],
					prefix: ["5018", "5020", "5038", "6304", "6759", "6761", "6762", "6763", "6764", "6765", "6766"]
				},
				MASTERCARD: {
					length: [16],
					prefix: ["51", "52", "53", "54", "55"]
				},
				SOLO: {
					length: [16, 18, 19],
					prefix: ["6334", "6767"]
				},
				UNIONPAY: {
					length: [16, 17, 18, 19],
					prefix: ["622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218", "62219",
						"6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921", "622922",
						"622923", "622924", "622925"
					]
				},
				VISA: {
					length: [16],
					prefix: ["4"]
				}
			};
			for (e in g)
				for (f in g[e].prefix)
					if (d.substr(0, g[e].prefix[f].length) === g[e].prefix[f] && -1 !== a.inArray(d.length, g[e].length)) return {
						valid: !0,
						type: e
					};
			return !1
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			cusip: {
				"default": "Please enter a valid CUSIP number"
			}
		}
	}), FormValidation.Validator.cusip = {
		validate: function(b, c) {
			var d = b.getFieldValue(c, "cusip");
			if ("" === d) return !0;
			if (d = d.toUpperCase(), !/^[0-9A-Z]{9}$/.test(d)) return !1;
			for (var e = a.map(d.split(""), function(a) {
					var b = a.charCodeAt(0);
					return b >= "A".charCodeAt(0) && b <= "Z".charCodeAt(0) ? b - "A".charCodeAt(0) + 10 : a
				}), f = e.length, g = 0, h = 0; f - 1 > h; h++) {
				var i = parseInt(e[h], 10);
				h % 2 !== 0 && (i *= 2), i > 9 && (i -= 9), g += i
			}
			return g = (10 - g % 10) % 10, g === parseInt(e[f - 1], 10)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			cvv: {
				"default": "Please enter a valid CVV number"
			}
		}
	}), FormValidation.Validator.cvv = {
		html5Attributes: {
			message: "message",
			ccfield: "creditCardField"
		},
		init: function(a, b, c) {
			if (c.creditCardField) {
				var d = a.getFieldElements(c.creditCardField);
				a.onLiveChange(d, "live_cvv", function() {
					var c = a.getStatus(b, "cvv");
					c !== a.STATUS_NOT_VALIDATED && a.revalidateField(b)
				})
			}
		},
		destroy: function(a, b, c) {
			if (c.creditCardField) {
				var d = a.getFieldElements(c.creditCardField);
				a.offLiveChange(d, "live_cvv")
			}
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "cvv");
			if ("" === e) return !0;
			if (!/^[0-9]{3,4}$/.test(e)) return !1;
			if (!d.creditCardField) return !0;
			var f = b.getFieldElements(d.creditCardField).val();
			if ("" === f) return !0;
			f = f.replace(/\D/g, "");
			var g, h, i = {
					AMERICAN_EXPRESS: {
						length: [15],
						prefix: ["34", "37"]
					},
					DINERS_CLUB: {
						length: [14],
						prefix: ["300", "301", "302", "303", "304", "305", "36"]
					},
					DINERS_CLUB_US: {
						length: [16],
						prefix: ["54", "55"]
					},
					DISCOVER: {
						length: [16],
						prefix: ["6011", "622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218",
							"62219", "6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921",
							"622922", "622923", "622924", "622925", "644", "645", "646", "647", "648", "649", "65"
						]
					},
					JCB: {
						length: [16],
						prefix: ["3528", "3529", "353", "354", "355", "356", "357", "358"]
					},
					LASER: {
						length: [16, 17, 18, 19],
						prefix: ["6304", "6706", "6771", "6709"]
					},
					MAESTRO: {
						length: [12, 13, 14, 15, 16, 17, 18, 19],
						prefix: ["5018", "5020", "5038", "6304", "6759", "6761", "6762", "6763", "6764", "6765", "6766"]
					},
					MASTERCARD: {
						length: [16],
						prefix: ["51", "52", "53", "54", "55"]
					},
					SOLO: {
						length: [16, 18, 19],
						prefix: ["6334", "6767"]
					},
					UNIONPAY: {
						length: [16, 17, 18, 19],
						prefix: ["622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218", "62219",
							"6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921", "622922",
							"622923", "622924", "622925"
						]
					},
					VISA: {
						length: [16],
						prefix: ["4"]
					}
				},
				j = null;
			for (g in i)
				for (h in i[g].prefix)
					if (f.substr(0, i[g].prefix[h].length) === i[g].prefix[h] && -1 !== a.inArray(f.length, i[g].length)) {
						j = g;
						break
					} return null === j ? !1 : "AMERICAN_EXPRESS" === j ? 4 === e.length : 3 === e.length
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			date: {
				"default": "Please enter a valid date",
				min: "Please enter a date after %s",
				max: "Please enter a date before %s",
				range: "Please enter a date in the range %s - %s"
			}
		}
	}), FormValidation.Validator.date = {
		html5Attributes: {
			message: "message",
			format: "format",
			min: "min",
			max: "max",
			separator: "separator"
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "date");
			if ("" === e) return !0;
			d.format = d.format || "MM/DD/YYYY", "date" === c.attr("type") && (d.format = "YYYY-MM-DD");
			var f = b.getLocale(),
				g = d.message || FormValidation.I18n[f].date["default"],
				h = d.format.split(" "),
				i = h[0],
				j = h.length > 1 ? h[1] : null,
				k = h.length > 2 ? h[2] : null,
				l = e.split(" "),
				m = l[0],
				n = l.length > 1 ? l[1] : null;
			if (h.length !== l.length) return {
				valid: !1,
				message: g
			};
			var o = d.separator;
			if (o || (o = -1 !== m.indexOf("/") ? "/" : -1 !== m.indexOf("-") ? "-" : -1 !== m.indexOf(".") ? "." : null),
				null === o || -1 === m.indexOf(o)) return {
				valid: !1,
				message: g
			};
			if (m = m.split(o), i = i.split(o), m.length !== i.length) return {
				valid: !1,
				message: g
			};
			var p = m[a.inArray("YYYY", i)],
				q = m[a.inArray("MM", i)],
				r = m[a.inArray("DD", i)];
			if (!p || !q || !r || 4 !== p.length) return {
				valid: !1,
				message: g
			};
			var s = null,
				t = null,
				u = null;
			if (j) {
				if (j = j.split(":"), n = n.split(":"), j.length !== n.length) return {
					valid: !1,
					message: g
				};
				if (t = n.length > 0 ? n[0] : null, s = n.length > 1 ? n[1] : null, u = n.length > 2 ? n[2] : null, "" === t ||
					"" === s || "" === u) return {
					valid: !1,
					message: g
				};
				if (u) {
					if (isNaN(u) || u.length > 2) return {
						valid: !1,
						message: g
					};
					if (u = parseInt(u, 10), 0 > u || u > 60) return {
						valid: !1,
						message: g
					}
				}
				if (t) {
					if (isNaN(t) || t.length > 2) return {
						valid: !1,
						message: g
					};
					if (t = parseInt(t, 10), 0 > t || t >= 24 || k && t > 12) return {
						valid: !1,
						message: g
					}
				}
				if (s) {
					if (isNaN(s) || s.length > 2) return {
						valid: !1,
						message: g
					};
					if (s = parseInt(s, 10), 0 > s || s > 59) return {
						valid: !1,
						message: g
					}
				}
			}
			var v = FormValidation.Helper.date(p, q, r),
				w = null,
				x = null,
				y = d.min,
				z = d.max;
			switch (y && (isNaN(Date.parse(y)) && (y = b.getDynamicOption(c, y)), w = y instanceof Date ? y : this._parseDate(
				y, i, o), y = y instanceof Date ? this._formatDate(y, d.format) : y), z && (isNaN(Date.parse(z)) && (z = b.getDynamicOption(
					c, z)), x = z instanceof Date ? z : this._parseDate(z, i, o), z = z instanceof Date ? this._formatDate(z, d.format) :
				z), m = new Date(p, q - 1, r, t, s, u), !0) {
				case y && !z && v:
					v = m.getTime() >= w.getTime(), g = d.message || FormValidation.Helper.format(FormValidation.I18n[f].date.min, y);
					break;
				case z && !y && v:
					v = m.getTime() <= x.getTime(), g = d.message || FormValidation.Helper.format(FormValidation.I18n[f].date.max, z);
					break;
				case z && y && v:
					v = m.getTime() <= x.getTime() && m.getTime() >= w.getTime(), g = d.message || FormValidation.Helper.format(
						FormValidation.I18n[f].date.range, [y, z])
			}
			return {
				valid: v,
				message: g
			}
		},
		_parseDate: function(b, c, d) {
			var e = 0,
				f = 0,
				g = 0,
				h = b.split(" "),
				i = h[0],
				j = h.length > 1 ? h[1] : null;
			i = i.split(d);
			var k = i[a.inArray("YYYY", c)],
				l = i[a.inArray("MM", c)],
				m = i[a.inArray("DD", c)];
			return j && (j = j.split(":"), f = j.length > 0 ? j[0] : null, e = j.length > 1 ? j[1] : null, g = j.length > 2 ?
				j[2] : null), new Date(k, l - 1, m, f, e, g)
		},
		_formatDate: function(a, b) {
			b = b.replace(/Y/g, "y").replace(/M/g, "m").replace(/D/g, "d").replace(/:m/g, ":M").replace(/:mm/g, ":MM").replace(
				/:S/, ":s").replace(/:SS/, ":ss");
			var c = {
				d: function(a) {
					return a.getDate()
				},
				dd: function(a) {
					var b = a.getDate();
					return 10 > b ? "0" + b : b
				},
				m: function(a) {
					return a.getMonth() + 1
				},
				mm: function(a) {
					var b = a.getMonth() + 1;
					return 10 > b ? "0" + b : b
				},
				yy: function(a) {
					return ("" + a.getFullYear()).substr(2)
				},
				yyyy: function(a) {
					return a.getFullYear()
				},
				h: function(a) {
					return a.getHours() % 12 || 12
				},
				hh: function(a) {
					var b = a.getHours() % 12 || 12;
					return 10 > b ? "0" + b : b
				},
				H: function(a) {
					return a.getHours()
				},
				HH: function(a) {
					var b = a.getHours();
					return 10 > b ? "0" + b : b
				},
				M: function(a) {
					return a.getMinutes()
				},
				MM: function(a) {
					var b = a.getMinutes();
					return 10 > b ? "0" + b : b
				},
				s: function(a) {
					return a.getSeconds()
				},
				ss: function(a) {
					var b = a.getSeconds();
					return 10 > b ? "0" + b : b
				}
			};
			return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMs])\1?|"[^"]*"|'[^']*'/g, function(b) {
				return c[b] ? c[b](a) : b.slice(1, b.length - 1)
			})
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			different: {
				"default": "Please enter a different value"
			}
		}
	}), FormValidation.Validator.different = {
		html5Attributes: {
			message: "message",
			field: "field"
		},
		init: function(a, b, c) {
			for (var d = c.field.split(","), e = 0; e < d.length; e++) {
				var f = a.getFieldElements(d[e]);
				a.onLiveChange(f, "live_different", function() {
					var c = a.getStatus(b, "different");
					c !== a.STATUS_NOT_VALIDATED && a.revalidateField(b)
				})
			}
		},
		destroy: function(a, b, c) {
			for (var d = c.field.split(","), e = 0; e < d.length; e++) {
				var f = a.getFieldElements(d[e]);
				a.offLiveChange(f, "live_different")
			}
		},
		validate: function(a, b, c) {
			var d = a.getFieldValue(b, "different");
			if ("" === d) return !0;
			for (var e = c.field.split(","), f = !0, g = 0; g < e.length; g++) {
				var h = a.getFieldElements(e[g]);
				if (null != h && 0 !== h.length) {
					var i = a.getFieldValue(h, "different");
					d === i ? f = !1 : "" !== i && a.updateStatus(h, a.STATUS_VALID, "different")
				}
			}
			return f
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			digits: {
				"default": "Please enter only digits"
			}
		}
	}), FormValidation.Validator.digits = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "digits");
			return "" === c ? !0 : /^\d+$/.test(c)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			ean: {
				"default": "Please enter a valid EAN number"
			}
		}
	}), FormValidation.Validator.ean = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "ean");
			if ("" === c) return !0;
			if (!/^(\d{8}|\d{12}|\d{13})$/.test(c)) return !1;
			for (var d = c.length, e = 0, f = 8 === d ? [3, 1] : [1, 3], g = 0; d - 1 > g; g++) e += parseInt(c.charAt(g), 10) *
				f[g % 2];
			return e = (10 - e % 10) % 10, e + "" === c.charAt(d - 1)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			ein: {
				"default": "Please enter a valid EIN number"
			}
		}
	}), FormValidation.Validator.ein = {
		CAMPUS: {
			ANDOVER: ["10", "12"],
			ATLANTA: ["60", "67"],
			AUSTIN: ["50", "53"],
			BROOKHAVEN: ["01", "02", "03", "04", "05", "06", "11", "13", "14", "16", "21", "22", "23", "25", "34", "51", "52",
				"54", "55", "56", "57", "58", "59", "65"
			],
			CINCINNATI: ["30", "32", "35", "36", "37", "38", "61"],
			FRESNO: ["15", "24"],
			KANSAS_CITY: ["40", "44"],
			MEMPHIS: ["94", "95"],
			OGDEN: ["80", "90"],
			PHILADELPHIA: ["33", "39", "41", "42", "43", "46", "48", "62", "63", "64", "66", "68", "71", "72", "73", "74", "75",
				"76", "77", "81", "82", "83", "84", "85", "86", "87", "88", "91", "92", "93", "98", "99"
			],
			INTERNET: ["20", "26", "27", "45", "46"],
			SMALL_BUSINESS_ADMINISTRATION: ["31"]
		},
		validate: function(b, c) {
			var d = b.getFieldValue(c, "ein");
			if ("" === d) return !0;
			if (!/^[0-9]{2}-?[0-9]{7}$/.test(d)) return !1;
			var e = d.substr(0, 2) + "";
			for (var f in this.CAMPUS)
				if (-1 !== a.inArray(e, this.CAMPUS[f])) return {
					valid: !0,
					campus: f
				};
			return !1
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			emailAddress: {
				"default": "Please enter a valid email address"
			}
		}
	}), FormValidation.Validator.emailAddress = {
		html5Attributes: {
			message: "message",
			multiple: "multiple",
			separator: "separator"
		},
		enableByHtml5: function(a) {
			return "email" === a.attr("type")
		},
		validate: function(a, b, c) {
			var d = a.getFieldValue(b, "emailAddress");
			if ("" === d) return !0;
			var e =
				/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
				f = c.multiple === !0 || "true" === c.multiple;
			if (f) {
				for (var g = c.separator || /[,;]/, h = this._splitEmailAddresses(d, g), i = 0; i < h.length; i++)
					if (!e.test(h[i])) return !1;
				return !0
			}
			return e.test(d)
		},
		_splitEmailAddresses: function(a, b) {
			for (var c = a.split(/"/), d = c.length, e = [], f = "", g = 0; d > g; g++)
				if (g % 2 === 0) {
					var h = c[g].split(b),
						i = h.length;
					if (1 === i) f += h[0];
					else {
						e.push(f + h[0]);
						for (var j = 1; i - 1 > j; j++) e.push(h[j]);
						f = h[i - 1]
					}
				} else f += '"' + c[g], d - 1 > g && (f += '"');
			return e.push(f), e
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			file: {
				"default": "Please choose a valid file"
			}
		}
	}), FormValidation.Validator.file = {
		html5Attributes: {
			extension: "extension",
			maxfiles: "maxFiles",
			minfiles: "minFiles",
			maxsize: "maxSize",
			minsize: "minSize",
			maxtotalsize: "maxTotalSize",
			mintotalsize: "minTotalSize",
			message: "message",
			type: "type"
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "file");
			if ("" === e) return !0;
			var f, g = d.extension ? d.extension.toLowerCase().split(",") : null,
				h = d.type ? d.type.toLowerCase().split(",") : null,
				i = window.File && window.FileList && window.FileReader;
			if (i) {
				var j = c.get(0).files,
					k = j.length,
					l = 0;
				if (d.maxFiles && k > parseInt(d.maxFiles, 10) || d.minFiles && k < parseInt(d.minFiles, 10)) return !1;
				for (var m = 0; k > m; m++)
					if (l += j[m].size, f = j[m].name.substr(j[m].name.lastIndexOf(".") + 1), d.minSize && j[m].size < parseInt(d.minSize,
							10) || d.maxSize && j[m].size > parseInt(d.maxSize, 10) || g && -1 === a.inArray(f.toLowerCase(), g) || j[m].type &&
						h && -1 === a.inArray(j[m].type.toLowerCase(), h)) return !1;
				if (d.maxTotalSize && l > parseInt(d.maxTotalSize, 10) || d.minTotalSize && l < parseInt(d.minTotalSize, 10))
					return !1
			} else if (f = e.substr(e.lastIndexOf(".") + 1), g && -1 === a.inArray(f.toLowerCase(), g)) return !1;
			return !0
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			greaterThan: {
				"default": "Please enter a value greater than or equal to %s",
				notInclusive: "Please enter a value greater than %s"
			}
		}
	}), FormValidation.Validator.greaterThan = {
		html5Attributes: {
			message: "message",
			value: "value",
			inclusive: "inclusive"
		},
		enableByHtml5: function(a) {
			var b = a.attr("type"),
				c = a.attr("min");
			return c && "date" !== b ? {
				value: c
			} : !1
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "greaterThan");
			if ("" === e) return !0;
			if (e = this._format(e), !a.isNumeric(e)) return !1;
			var f = b.getLocale(),
				g = a.isNumeric(d.value) ? d.value : b.getDynamicOption(c, d.value),
				h = this._format(g);
			return e = parseFloat(e), d.inclusive === !0 || void 0 === d.inclusive ? {
				valid: e >= h,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].greaterThan["default"], g)
			} : {
				valid: e > h,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].greaterThan.notInclusive, g)
			}
		},
		_format: function(a) {
			return (a + "").replace(",", ".")
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			grid: {
				"default": "Please enter a valid GRId number"
			}
		}
	}), FormValidation.Validator.grid = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "grid");
			return "" === c ? !0 : (c = c.toUpperCase(),
				/^[GRID:]*([0-9A-Z]{2})[-\s]*([0-9A-Z]{5})[-\s]*([0-9A-Z]{10})[-\s]*([0-9A-Z]{1})$/g.test(c) ? (c = c.replace(
					/\s/g, "").replace(/-/g, ""), "GRID:" === c.substr(0, 5) && (c = c.substr(5)), FormValidation.Helper.mod37And36(
					c)) : !1)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			hex: {
				"default": "Please enter a valid hexadecimal number"
			}
		}
	}), FormValidation.Validator.hex = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "hex");
			return "" === c ? !0 : /^[0-9a-fA-F]+$/.test(c)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			iban: {
				"default": "Please enter a valid IBAN number",
				country: "Please enter a valid IBAN number in %s",
				countries: {
					AD: "Andorra",
					AE: "United Arab Emirates",
					AL: "Albania",
					AO: "Angola",
					AT: "Austria",
					AZ: "Azerbaijan",
					BA: "Bosnia and Herzegovina",
					BE: "Belgium",
					BF: "Burkina Faso",
					BG: "Bulgaria",
					BH: "Bahrain",
					BI: "Burundi",
					BJ: "Benin",
					BR: "Brazil",
					CH: "Switzerland",
					CI: "Ivory Coast",
					CM: "Cameroon",
					CR: "Costa Rica",
					CV: "Cape Verde",
					CY: "Cyprus",
					CZ: "Czech Republic",
					DE: "Germany",
					DK: "Denmark",
					DO: "Dominican Republic",
					DZ: "Algeria",
					EE: "Estonia",
					ES: "Spain",
					FI: "Finland",
					FO: "Faroe Islands",
					FR: "France",
					GB: "United Kingdom",
					GE: "Georgia",
					GI: "Gibraltar",
					GL: "Greenland",
					GR: "Greece",
					GT: "Guatemala",
					HR: "Croatia",
					HU: "Hungary",
					IE: "Ireland",
					IL: "Israel",
					IR: "Iran",
					IS: "Iceland",
					IT: "Italy",
					JO: "Jordan",
					KW: "Kuwait",
					KZ: "Kazakhstan",
					LB: "Lebanon",
					LI: "Liechtenstein",
					LT: "Lithuania",
					LU: "Luxembourg",
					LV: "Latvia",
					MC: "Monaco",
					MD: "Moldova",
					ME: "Montenegro",
					MG: "Madagascar",
					MK: "Macedonia",
					ML: "Mali",
					MR: "Mauritania",
					MT: "Malta",
					MU: "Mauritius",
					MZ: "Mozambique",
					NL: "Netherlands",
					NO: "Norway",
					PK: "Pakistan",
					PL: "Poland",
					PS: "Palestine",
					PT: "Portugal",
					QA: "Qatar",
					RO: "Romania",
					RS: "Serbia",
					SA: "Saudi Arabia",
					SE: "Sweden",
					SI: "Slovenia",
					SK: "Slovakia",
					SM: "San Marino",
					SN: "Senegal",
					TN: "Tunisia",
					TR: "Turkey",
					VG: "Virgin Islands, British"
				}
			}
		}
	}), FormValidation.Validator.iban = {
		html5Attributes: {
			message: "message",
			country: "country"
		},
		REGEX: {
			AD: "AD[0-9]{2}[0-9]{4}[0-9]{4}[A-Z0-9]{12}",
			AE: "AE[0-9]{2}[0-9]{3}[0-9]{16}",
			AL: "AL[0-9]{2}[0-9]{8}[A-Z0-9]{16}",
			AO: "AO[0-9]{2}[0-9]{21}",
			AT: "AT[0-9]{2}[0-9]{5}[0-9]{11}",
			AZ: "AZ[0-9]{2}[A-Z]{4}[A-Z0-9]{20}",
			BA: "BA[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{8}[0-9]{2}",
			BE: "BE[0-9]{2}[0-9]{3}[0-9]{7}[0-9]{2}",
			BF: "BF[0-9]{2}[0-9]{23}",
			BG: "BG[0-9]{2}[A-Z]{4}[0-9]{4}[0-9]{2}[A-Z0-9]{8}",
			BH: "BH[0-9]{2}[A-Z]{4}[A-Z0-9]{14}",
			BI: "BI[0-9]{2}[0-9]{12}",
			BJ: "BJ[0-9]{2}[A-Z]{1}[0-9]{23}",
			BR: "BR[0-9]{2}[0-9]{8}[0-9]{5}[0-9]{10}[A-Z][A-Z0-9]",
			CH: "CH[0-9]{2}[0-9]{5}[A-Z0-9]{12}",
			CI: "CI[0-9]{2}[A-Z]{1}[0-9]{23}",
			CM: "CM[0-9]{2}[0-9]{23}",
			CR: "CR[0-9]{2}[0-9]{3}[0-9]{14}",
			CV: "CV[0-9]{2}[0-9]{21}",
			CY: "CY[0-9]{2}[0-9]{3}[0-9]{5}[A-Z0-9]{16}",
			CZ: "CZ[0-9]{2}[0-9]{20}",
			DE: "DE[0-9]{2}[0-9]{8}[0-9]{10}",
			DK: "DK[0-9]{2}[0-9]{14}",
			DO: "DO[0-9]{2}[A-Z0-9]{4}[0-9]{20}",
			DZ: "DZ[0-9]{2}[0-9]{20}",
			EE: "EE[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{11}[0-9]{1}",
			ES: "ES[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{1}[0-9]{1}[0-9]{10}",
			FI: "FI[0-9]{2}[0-9]{6}[0-9]{7}[0-9]{1}",
			FO: "FO[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",
			FR: "FR[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",
			GB: "GB[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",
			GE: "GE[0-9]{2}[A-Z]{2}[0-9]{16}",
			GI: "GI[0-9]{2}[A-Z]{4}[A-Z0-9]{15}",
			GL: "GL[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",
			GR: "GR[0-9]{2}[0-9]{3}[0-9]{4}[A-Z0-9]{16}",
			GT: "GT[0-9]{2}[A-Z0-9]{4}[A-Z0-9]{20}",
			HR: "HR[0-9]{2}[0-9]{7}[0-9]{10}",
			HU: "HU[0-9]{2}[0-9]{3}[0-9]{4}[0-9]{1}[0-9]{15}[0-9]{1}",
			IE: "IE[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",
			IL: "IL[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{13}",
			IR: "IR[0-9]{2}[0-9]{22}",
			IS: "IS[0-9]{2}[0-9]{4}[0-9]{2}[0-9]{6}[0-9]{10}",
			IT: "IT[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",
			JO: "JO[0-9]{2}[A-Z]{4}[0-9]{4}[0]{8}[A-Z0-9]{10}",
			KW: "KW[0-9]{2}[A-Z]{4}[0-9]{22}",
			KZ: "KZ[0-9]{2}[0-9]{3}[A-Z0-9]{13}",
			LB: "LB[0-9]{2}[0-9]{4}[A-Z0-9]{20}",
			LI: "LI[0-9]{2}[0-9]{5}[A-Z0-9]{12}",
			LT: "LT[0-9]{2}[0-9]{5}[0-9]{11}",
			LU: "LU[0-9]{2}[0-9]{3}[A-Z0-9]{13}",
			LV: "LV[0-9]{2}[A-Z]{4}[A-Z0-9]{13}",
			MC: "MC[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",
			MD: "MD[0-9]{2}[A-Z0-9]{20}",
			ME: "ME[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
			MG: "MG[0-9]{2}[0-9]{23}",
			MK: "MK[0-9]{2}[0-9]{3}[A-Z0-9]{10}[0-9]{2}",
			ML: "ML[0-9]{2}[A-Z]{1}[0-9]{23}",
			MR: "MR13[0-9]{5}[0-9]{5}[0-9]{11}[0-9]{2}",
			MT: "MT[0-9]{2}[A-Z]{4}[0-9]{5}[A-Z0-9]{18}",
			MU: "MU[0-9]{2}[A-Z]{4}[0-9]{2}[0-9]{2}[0-9]{12}[0-9]{3}[A-Z]{3}",
			MZ: "MZ[0-9]{2}[0-9]{21}",
			NL: "NL[0-9]{2}[A-Z]{4}[0-9]{10}",
			NO: "NO[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{1}",
			PK: "PK[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",
			PL: "PL[0-9]{2}[0-9]{8}[0-9]{16}",
			PS: "PS[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",
			PT: "PT[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{11}[0-9]{2}",
			QA: "QA[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",
			RO: "RO[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",
			RS: "RS[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
			SA: "SA[0-9]{2}[0-9]{2}[A-Z0-9]{18}",
			SE: "SE[0-9]{2}[0-9]{3}[0-9]{16}[0-9]{1}",
			SI: "SI[0-9]{2}[0-9]{5}[0-9]{8}[0-9]{2}",
			SK: "SK[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{10}",
			SM: "SM[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",
			SN: "SN[0-9]{2}[A-Z]{1}[0-9]{23}",
			TN: "TN59[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
			TR: "TR[0-9]{2}[0-9]{5}[A-Z0-9]{1}[A-Z0-9]{16}",
			VG: "VG[0-9]{2}[A-Z]{4}[0-9]{16}"
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "iban");
			if ("" === e) return !0;
			e = e.replace(/[^a-zA-Z0-9]/g, "").toUpperCase();
			var f = d.country;
			f ? "string" == typeof f && this.REGEX[f] || (f = b.getDynamicOption(c, f)) : f = e.substr(0, 2);
			var g = b.getLocale();
			if (!this.REGEX[f]) return !0;
			if (!new RegExp("^" + this.REGEX[f] + "$").test(e)) return {
				valid: !1,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[g].iban.country, FormValidation.I18n[g].iban
					.countries[f])
			};
			e = e.substr(4) + e.substr(0, 4), e = a.map(e.split(""), function(a) {
				var b = a.charCodeAt(0);
				return b >= "A".charCodeAt(0) && b <= "Z".charCodeAt(0) ? b - "A".charCodeAt(0) + 10 : a
			}), e = e.join("");
			for (var h = parseInt(e.substr(0, 1), 10), i = e.length, j = 1; i > j; ++j) h = (10 * h + parseInt(e.substr(j, 1),
				10)) % 97;
			return {
				valid: 1 === h,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[g].iban.country, FormValidation.I18n[g].iban
					.countries[f])
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			id: {
				"default": "Please enter a valid identification number",
				country: "Please enter a valid identification number in %s",
				countries: {
					BA: "Bosnia and Herzegovina",
					BG: "Bulgaria",
					BR: "Brazil",
					CH: "Switzerland",
					CL: "Chile",
					CN: "China",
					CZ: "Czech Republic",
					DK: "Denmark",
					EE: "Estonia",
					ES: "Spain",
					FI: "Finland",
					HR: "Croatia",
					IE: "Ireland",
					IS: "Iceland",
					LT: "Lithuania",
					LV: "Latvia",
					ME: "Montenegro",
					MK: "Macedonia",
					NL: "Netherlands",
					PL: "Poland",
					RO: "Romania",
					RS: "Serbia",
					SE: "Sweden",
					SI: "Slovenia",
					SK: "Slovakia",
					SM: "San Marino",
					TH: "Thailand",
					ZA: "South Africa"
				}
			}
		}
	}), FormValidation.Validator.id = {
		html5Attributes: {
			message: "message",
			country: "country"
		},
		COUNTRY_CODES: ["BA", "BG", "BR", "CH", "CL", "CN", "CZ", "DK", "EE", "ES", "FI", "HR", "IE", "IS", "LT", "LV", "ME",
			"MK", "NL", "PL", "RO", "RS", "SE", "SI", "SK", "SM", "TH", "ZA"
		],
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "id");
			if ("" === e) return !0;
			var f = b.getLocale(),
				g = d.country;
			if (g ? ("string" != typeof g || -1 === a.inArray(g.toUpperCase(), this.COUNTRY_CODES)) && (g = b.getDynamicOption(
					c, g)) : g = e.substr(0, 2), -1 === a.inArray(g, this.COUNTRY_CODES)) return !0;
			var h = ["_", g.toLowerCase()].join("");
			return this[h](e) ? !0 : {
				valid: !1,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].id.country, FormValidation.I18n[f].id.countries[
					g.toUpperCase()])
			}
		},
		_validateJMBG: function(a, b) {
			if (!/^\d{13}$/.test(a)) return !1;
			var c = parseInt(a.substr(0, 2), 10),
				d = parseInt(a.substr(2, 2), 10),
				e = (parseInt(a.substr(4, 3), 10), parseInt(a.substr(7, 2), 10)),
				f = parseInt(a.substr(12, 1), 10);
			if (c > 31 || d > 12) return !1;
			for (var g = 0, h = 0; 6 > h; h++) g += (7 - h) * (parseInt(a.charAt(h), 10) + parseInt(a.charAt(h + 6), 10));
			if (g = 11 - g % 11, (10 === g || 11 === g) && (g = 0), g !== f) return !1;
			switch (b.toUpperCase()) {
				case "BA":
					return e >= 10 && 19 >= e;
				case "MK":
					return e >= 41 && 49 >= e;
				case "ME":
					return e >= 20 && 29 >= e;
				case "RS":
					return e >= 70 && 99 >= e;
				case "SI":
					return e >= 50 && 59 >= e;
				default:
					return !0
			}
		},
		_ba: function(a) {
			return this._validateJMBG(a, "BA")
		},
		_mk: function(a) {
			return this._validateJMBG(a, "MK")
		},
		_me: function(a) {
			return this._validateJMBG(a, "ME")
		},
		_rs: function(a) {
			return this._validateJMBG(a, "RS")
		},
		_si: function(a) {
			return this._validateJMBG(a, "SI")
		},
		_bg: function(a) {
			if (!/^\d{10}$/.test(a) && !/^\d{6}\s\d{3}\s\d{1}$/.test(a)) return !1;
			a = a.replace(/\s/g, "");
			var b = parseInt(a.substr(0, 2), 10) + 1900,
				c = parseInt(a.substr(2, 2), 10),
				d = parseInt(a.substr(4, 2), 10);
			if (c > 40 ? (b += 100, c -= 40) : c > 20 && (b -= 100, c -= 20), !FormValidation.Helper.date(b, c, d)) return !1;
			for (var e = 0, f = [2, 4, 8, 5, 10, 9, 7, 3, 6], g = 0; 9 > g; g++) e += parseInt(a.charAt(g), 10) * f[g];
			return e = e % 11 % 10, e + "" === a.substr(9, 1)
		},
		_br: function(a) {
			if (a = a.replace(/\D/g, ""), !/^\d{11}$/.test(a) ||
				/^1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}|0{11}$/.test(a)) return !1;
			for (var b = 0, c = 0; 9 > c; c++) b += (10 - c) * parseInt(a.charAt(c), 10);
			if (b = 11 - b % 11, (10 === b || 11 === b) && (b = 0), b + "" !== a.charAt(9)) return !1;
			var d = 0;
			for (c = 0; 10 > c; c++) d += (11 - c) * parseInt(a.charAt(c), 10);
			return d = 11 - d % 11, (10 === d || 11 === d) && (d = 0), d + "" === a.charAt(10)
		},
		_ch: function(a) {
			if (!/^756[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{2}$/.test(a)) return !1;
			a = a.replace(/\D/g, "").substr(3);
			for (var b = a.length, c = 0, d = 8 === b ? [3, 1] : [1, 3], e = 0; b - 1 > e; e++) c += parseInt(a.charAt(e), 10) *
				d[e % 2];
			return c = 10 - c % 10, c + "" === a.charAt(b - 1)
		},
		_cl: function(a) {
			if (!/^\d{7,8}[-]{0,1}[0-9K]$/i.test(a)) return !1;
			for (a = a.replace(/\-/g, ""); a.length < 9;) a = "0" + a;
			for (var b = 0, c = [3, 2, 7, 6, 5, 4, 3, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b = 11 - b % 11, 11 === b ? b = 0 : 10 === b && (b = "K"), b + "" === a.charAt(8).toUpperCase()
		},
		_cn: function(b) {
			if (b = b.trim(), !/^\d{15}$/.test(b) && !/^\d{17}[\dXx]{1}$/.test(b)) return !1;
			var c = {
					11: {
						0: [0],
						1: [
							[0, 9],
							[11, 17]
						],
						2: [0, 28, 29]
					},
					12: {
						0: [0],
						1: [
							[0, 16]
						],
						2: [0, 21, 23, 25]
					},
					13: {
						0: [0],
						1: [
							[0, 5], 7, 8, 21, [23, 33],
							[81, 85]
						],
						2: [
							[0, 5],
							[7, 9],
							[23, 25], 27, 29, 30, 81, 83
						],
						3: [
							[0, 4],
							[21, 24]
						],
						4: [
							[0, 4], 6, 21, [23, 35], 81
						],
						5: [
							[0, 3],
							[21, 35], 81, 82
						],
						6: [
							[0, 4],
							[21, 38],
							[81, 84]
						],
						7: [
							[0, 3], 5, 6, [21, 33]
						],
						8: [
							[0, 4],
							[21, 28]
						],
						9: [
							[0, 3],
							[21, 30],
							[81, 84]
						],
						10: [
							[0, 3],
							[22, 26], 28, 81, 82
						],
						11: [
							[0, 2],
							[21, 28], 81, 82
						]
					},
					14: {
						0: [0],
						1: [0, 1, [5, 10],
							[21, 23], 81
						],
						2: [
							[0, 3], 11, 12, [21, 27]
						],
						3: [
							[0, 3], 11, 21, 22
						],
						4: [
							[0, 2], 11, 21, [23, 31], 81
						],
						5: [
							[0, 2], 21, 22, 24, 25, 81
						],
						6: [
							[0, 3],
							[21, 24]
						],
						7: [
							[0, 2],
							[21, 29], 81
						],
						8: [
							[0, 2],
							[21, 30], 81, 82
						],
						9: [
							[0, 2],
							[21, 32], 81
						],
						10: [
							[0, 2],
							[21, 34], 81, 82
						],
						11: [
							[0, 2],
							[21, 30], 81, 82
						],
						23: [
							[0, 3], 22, 23, [25, 30], 32, 33
						]
					},
					15: {
						0: [0],
						1: [
							[0, 5],
							[21, 25]
						],
						2: [
							[0, 7],
							[21, 23]
						],
						3: [
							[0, 4]
						],
						4: [
							[0, 4],
							[21, 26],
							[28, 30]
						],
						5: [
							[0, 2],
							[21, 26], 81
						],
						6: [
							[0, 2],
							[21, 27]
						],
						7: [
							[0, 3],
							[21, 27],
							[81, 85]
						],
						8: [
							[0, 2],
							[21, 26]
						],
						9: [
							[0, 2],
							[21, 29], 81
						],
						22: [
							[0, 2],
							[21, 24]
						],
						25: [
							[0, 2],
							[22, 31]
						],
						26: [
							[0, 2],
							[24, 27],
							[29, 32], 34
						],
						28: [0, 1, [22, 27]],
						29: [0, [21, 23]]
					},
					21: {
						0: [0],
						1: [
							[0, 6],
							[11, 14],
							[22, 24], 81
						],
						2: [
							[0, 4],
							[11, 13], 24, [81, 83]
						],
						3: [
							[0, 4], 11, 21, 23, 81
						],
						4: [
							[0, 4], 11, [21, 23]
						],
						5: [
							[0, 5], 21, 22
						],
						6: [
							[0, 4], 24, 81, 82
						],
						7: [
							[0, 3], 11, 26, 27, 81, 82
						],
						8: [
							[0, 4], 11, 81, 82
						],
						9: [
							[0, 5], 11, 21, 22
						],
						10: [
							[0, 5], 11, 21, 81
						],
						11: [
							[0, 3], 21, 22
						],
						12: [
							[0, 2], 4, 21, 23, 24, 81, 82
						],
						13: [
							[0, 3], 21, 22, 24, 81, 82
						],
						14: [
							[0, 4], 21, 22, 81
						]
					},
					22: {
						0: [0],
						1: [
							[0, 6], 12, 22, [81, 83]
						],
						2: [
							[0, 4], 11, 21, [81, 84]
						],
						3: [
							[0, 3], 22, 23, 81, 82
						],
						4: [
							[0, 3], 21, 22
						],
						5: [
							[0, 3], 21, 23, 24, 81, 82
						],
						6: [
							[0, 2], 4, 5, [21, 23], 25, 81
						],
						7: [
							[0, 2],
							[21, 24], 81
						],
						8: [
							[0, 2], 21, 22, 81, 82
						],
						24: [
							[0, 6], 24, 26
						]
					},
					23: {
						0: [0],
						1: [
							[0, 12], 21, [23, 29],
							[81, 84]
						],
						2: [
							[0, 8], 21, [23, 25], 27, [29, 31], 81
						],
						3: [
							[0, 7], 21, 81, 82
						],
						4: [
							[0, 7], 21, 22
						],
						5: [
							[0, 3], 5, 6, [21, 24]
						],
						6: [
							[0, 6],
							[21, 24]
						],
						7: [
							[0, 16], 22, 81
						],
						8: [
							[0, 5], 11, 22, 26, 28, 33, 81, 82
						],
						9: [
							[0, 4], 21
						],
						10: [
							[0, 5], 24, 25, 81, [83, 85]
						],
						11: [
							[0, 2], 21, 23, 24, 81, 82
						],
						12: [
							[0, 2],
							[21, 26],
							[81, 83]
						],
						27: [
							[0, 4],
							[21, 23]
						]
					},
					31: {
						0: [0],
						1: [0, 1, [3, 10],
							[12, 20]
						],
						2: [0, 30]
					},
					32: {
						0: [0],
						1: [
							[0, 7], 11, [13, 18], 24, 25
						],
						2: [
							[0, 6], 11, 81, 82
						],
						3: [
							[0, 5], 11, 12, [21, 24], 81, 82
						],
						4: [
							[0, 2], 4, 5, 11, 12, 81, 82
						],
						5: [
							[0, 9],
							[81, 85]
						],
						6: [
							[0, 2], 11, 12, 21, 23, [81, 84]
						],
						7: [0, 1, 3, 5, 6, [21, 24]],
						8: [
							[0, 4], 11, 26, [29, 31]
						],
						9: [
							[0, 3],
							[21, 25], 28, 81, 82
						],
						10: [
							[0, 3], 11, 12, 23, 81, 84, 88
						],
						11: [
							[0, 2], 11, 12, [81, 83]
						],
						12: [
							[0, 4],
							[81, 84]
						],
						13: [
							[0, 2], 11, [21, 24]
						]
					},
					33: {
						0: [0],
						1: [
							[0, 6],
							[8, 10], 22, 27, 82, 83, 85
						],
						2: [0, 1, [3, 6], 11, 12, 25, 26, [81, 83]],
						3: [
							[0, 4], 22, 24, [26, 29], 81, 82
						],
						4: [
							[0, 2], 11, 21, 24, [81, 83]
						],
						5: [
							[0, 3],
							[21, 23]
						],
						6: [
							[0, 2], 21, 24, [81, 83]
						],
						7: [
							[0, 3], 23, 26, 27, [81, 84]
						],
						8: [
							[0, 3], 22, 24, 25, 81
						],
						9: [
							[0, 3], 21, 22
						],
						10: [
							[0, 4],
							[21, 24], 81, 82
						],
						11: [
							[0, 2],
							[21, 27], 81
						]
					},
					34: {
						0: [0],
						1: [
							[0, 4], 11, [21, 24], 81
						],
						2: [
							[0, 4], 7, 8, [21, 23], 25
						],
						3: [
							[0, 4], 11, [21, 23]
						],
						4: [
							[0, 6], 21
						],
						5: [
							[0, 4], 6, [21, 23]
						],
						6: [
							[0, 4], 21
						],
						7: [
							[0, 3], 11, 21
						],
						8: [
							[0, 3], 11, [22, 28], 81
						],
						10: [
							[0, 4],
							[21, 24]
						],
						11: [
							[0, 3], 22, [24, 26], 81, 82
						],
						12: [
							[0, 4], 21, 22, 25, 26, 82
						],
						13: [
							[0, 2],
							[21, 24]
						],
						14: [
							[0, 2],
							[21, 24]
						],
						15: [
							[0, 3],
							[21, 25]
						],
						16: [
							[0, 2],
							[21, 23]
						],
						17: [
							[0, 2],
							[21, 23]
						],
						18: [
							[0, 2],
							[21, 25], 81
						]
					},
					35: {
						0: [0],
						1: [
							[0, 5], 11, [21, 25], 28, 81, 82
						],
						2: [
							[0, 6],
							[11, 13]
						],
						3: [
							[0, 5], 22
						],
						4: [
							[0, 3], 21, [23, 30], 81
						],
						5: [
							[0, 5], 21, [24, 27],
							[81, 83]
						],
						6: [
							[0, 3],
							[22, 29], 81
						],
						7: [
							[0, 2],
							[21, 25],
							[81, 84]
						],
						8: [
							[0, 2],
							[21, 25], 81
						],
						9: [
							[0, 2],
							[21, 26], 81, 82
						]
					},
					36: {
						0: [0],
						1: [
							[0, 5], 11, [21, 24]
						],
						2: [
							[0, 3], 22, 81
						],
						3: [
							[0, 2], 13, [21, 23]
						],
						4: [
							[0, 3], 21, [23, 30], 81, 82
						],
						5: [
							[0, 2], 21
						],
						6: [
							[0, 2], 22, 81
						],
						7: [
							[0, 2],
							[21, 35], 81, 82
						],
						8: [
							[0, 3],
							[21, 30], 81
						],
						9: [
							[0, 2],
							[21, 26],
							[81, 83]
						],
						10: [
							[0, 2],
							[21, 30]
						],
						11: [
							[0, 2],
							[21, 30], 81
						]
					},
					37: {
						0: [0],
						1: [
							[0, 5], 12, 13, [24, 26], 81
						],
						2: [
							[0, 3], 5, [11, 14],
							[81, 85]
						],
						3: [
							[0, 6],
							[21, 23]
						],
						4: [
							[0, 6], 81
						],
						5: [
							[0, 3],
							[21, 23]
						],
						6: [
							[0, 2],
							[11, 13], 34, [81, 87]
						],
						7: [
							[0, 5], 24, 25, [81, 86]
						],
						8: [
							[0, 2], 11, [26, 32],
							[81, 83]
						],
						9: [
							[0, 3], 11, 21, 23, 82, 83
						],
						10: [
							[0, 2],
							[81, 83]
						],
						11: [
							[0, 3], 21, 22
						],
						12: [
							[0, 3]
						],
						13: [
							[0, 2], 11, 12, [21, 29]
						],
						14: [
							[0, 2],
							[21, 28], 81, 82
						],
						15: [
							[0, 2],
							[21, 26], 81
						],
						16: [
							[0, 2],
							[21, 26]
						],
						17: [
							[0, 2],
							[21, 28]
						]
					},
					41: {
						0: [0],
						1: [
							[0, 6], 8, 22, [81, 85]
						],
						2: [
							[0, 5], 11, [21, 25]
						],
						3: [
							[0, 7], 11, [22, 29], 81
						],
						4: [
							[0, 4], 11, [21, 23], 25, 81, 82
						],
						5: [
							[0, 3], 5, 6, 22, 23, 26, 27, 81
						],
						6: [
							[0, 3], 11, 21, 22
						],
						7: [
							[0, 4], 11, 21, [24, 28], 81, 82
						],
						8: [
							[0, 4], 11, [21, 23], 25, [81, 83]
						],
						9: [
							[0, 2], 22, 23, [26, 28]
						],
						10: [
							[0, 2],
							[23, 25], 81, 82
						],
						11: [
							[0, 4],
							[21, 23]
						],
						12: [
							[0, 2], 21, 22, 24, 81, 82
						],
						13: [
							[0, 3],
							[21, 30], 81
						],
						14: [
							[0, 3],
							[21, 26], 81
						],
						15: [
							[0, 3],
							[21, 28]
						],
						16: [
							[0, 2],
							[21, 28], 81
						],
						17: [
							[0, 2],
							[21, 29]
						],
						90: [0, 1]
					},
					42: {
						0: [0],
						1: [
							[0, 7],
							[11, 17]
						],
						2: [
							[0, 5], 22, 81
						],
						3: [
							[0, 3],
							[21, 25], 81
						],
						5: [
							[0, 6],
							[25, 29],
							[81, 83]
						],
						6: [
							[0, 2], 6, 7, [24, 26],
							[82, 84]
						],
						7: [
							[0, 4]
						],
						8: [
							[0, 2], 4, 21, 22, 81
						],
						9: [
							[0, 2],
							[21, 23], 81, 82, 84
						],
						10: [
							[0, 3],
							[22, 24], 81, 83, 87
						],
						11: [
							[0, 2],
							[21, 27], 81, 82
						],
						12: [
							[0, 2],
							[21, 24], 81
						],
						13: [
							[0, 3], 21, 81
						],
						28: [
							[0, 2], 22, 23, [25, 28]
						],
						90: [0, [4, 6], 21]
					},
					43: {
						0: [0],
						1: [
							[0, 5], 11, 12, 21, 22, 24, 81
						],
						2: [
							[0, 4], 11, 21, [23, 25], 81
						],
						3: [
							[0, 2], 4, 21, 81, 82
						],
						4: [0, 1, [5, 8], 12, [21, 24], 26, 81, 82],
						5: [
							[0, 3], 11, [21, 25],
							[27, 29], 81
						],
						6: [
							[0, 3], 11, 21, 23, 24, 26, 81, 82
						],
						7: [
							[0, 3],
							[21, 26], 81
						],
						8: [
							[0, 2], 11, 21, 22
						],
						9: [
							[0, 3],
							[21, 23], 81
						],
						10: [
							[0, 3],
							[21, 28], 81
						],
						11: [
							[0, 3],
							[21, 29]
						],
						12: [
							[0, 2],
							[21, 30], 81
						],
						13: [
							[0, 2], 21, 22, 81, 82
						],
						31: [0, 1, [22, 27], 30]
					},
					44: {
						0: [0],
						1: [
							[0, 7],
							[11, 16], 83, 84
						],
						2: [
							[0, 5], 21, 22, 24, 29, 32, 33, 81, 82
						],
						3: [0, 1, [3, 8]],
						4: [
							[0, 4]
						],
						5: [0, 1, [6, 15], 23, 82, 83],
						6: [0, 1, [4, 8]],
						7: [0, 1, [3, 5], 81, [83, 85]],
						8: [
							[0, 4], 11, 23, 25, [81, 83]
						],
						9: [
							[0, 3], 23, [81, 83]
						],
						12: [
							[0, 3],
							[23, 26], 83, 84
						],
						13: [
							[0, 3],
							[22, 24], 81
						],
						14: [
							[0, 2],
							[21, 24], 26, 27, 81
						],
						15: [
							[0, 2], 21, 23, 81
						],
						16: [
							[0, 2],
							[21, 25]
						],
						17: [
							[0, 2], 21, 23, 81
						],
						18: [
							[0, 3], 21, 23, [25, 27], 81, 82
						],
						19: [0],
						20: [0],
						51: [
							[0, 3], 21, 22
						],
						52: [
							[0, 3], 21, 22, 24, 81
						],
						53: [
							[0, 2],
							[21, 23], 81
						]
					},
					45: {
						0: [0],
						1: [
							[0, 9],
							[21, 27]
						],
						2: [
							[0, 5],
							[21, 26]
						],
						3: [
							[0, 5], 11, 12, [21, 32]
						],
						4: [0, 1, [3, 6], 11, [21, 23], 81],
						5: [
							[0, 3], 12, 21
						],
						6: [
							[0, 3], 21, 81
						],
						7: [
							[0, 3], 21, 22
						],
						8: [
							[0, 4], 21, 81
						],
						9: [
							[0, 3],
							[21, 24], 81
						],
						10: [
							[0, 2],
							[21, 31]
						],
						11: [
							[0, 2],
							[21, 23]
						],
						12: [
							[0, 2],
							[21, 29], 81
						],
						13: [
							[0, 2],
							[21, 24], 81
						],
						14: [
							[0, 2],
							[21, 25], 81
						]
					},
					46: {
						0: [0],
						1: [0, 1, [5, 8]],
						2: [0, 1],
						3: [0, [21, 23]],
						90: [
							[0, 3],
							[5, 7],
							[21, 39]
						]
					},
					50: {
						0: [0],
						1: [
							[0, 19]
						],
						2: [0, [22, 38],
							[40, 43]
						],
						3: [0, [81, 84]]
					},
					51: {
						0: [0],
						1: [0, 1, [4, 8],
							[12, 15],
							[21, 24], 29, 31, 32, [81, 84]
						],
						3: [
							[0, 4], 11, 21, 22
						],
						4: [
							[0, 3], 11, 21, 22
						],
						5: [
							[0, 4], 21, 22, 24, 25
						],
						6: [0, 1, 3, 23, 26, [81, 83]],
						7: [0, 1, 3, 4, [22, 27], 81],
						8: [
							[0, 2], 11, 12, [21, 24]
						],
						9: [
							[0, 4],
							[21, 23]
						],
						10: [
							[0, 2], 11, 24, 25, 28
						],
						11: [
							[0, 2],
							[11, 13], 23, 24, 26, 29, 32, 33, 81
						],
						13: [
							[0, 4],
							[21, 25], 81
						],
						14: [
							[0, 2],
							[21, 25]
						],
						15: [
							[0, 3],
							[21, 29]
						],
						16: [
							[0, 3],
							[21, 23], 81
						],
						17: [
							[0, 3],
							[21, 25], 81
						],
						18: [
							[0, 3],
							[21, 27]
						],
						19: [
							[0, 3],
							[21, 23]
						],
						20: [
							[0, 2], 21, 22, 81
						],
						32: [0, [21, 33]],
						33: [0, [21, 38]],
						34: [0, 1, [22, 37]]
					},
					52: {
						0: [0],
						1: [
							[0, 3],
							[11, 15],
							[21, 23], 81
						],
						2: [0, 1, 3, 21, 22],
						3: [
							[0, 3],
							[21, 30], 81, 82
						],
						4: [
							[0, 2],
							[21, 25]
						],
						5: [
							[0, 2],
							[21, 27]
						],
						6: [
							[0, 3],
							[21, 28]
						],
						22: [0, 1, [22, 30]],
						23: [0, 1, [22, 28]],
						24: [0, 1, [22, 28]],
						26: [0, 1, [22, 36]],
						27: [
							[0, 2], 22, 23, [25, 32]
						]
					},
					53: {
						0: [0],
						1: [
							[0, 3],
							[11, 14], 21, 22, [24, 29], 81
						],
						3: [
							[0, 2],
							[21, 26], 28, 81
						],
						4: [
							[0, 2],
							[21, 28]
						],
						5: [
							[0, 2],
							[21, 24]
						],
						6: [
							[0, 2],
							[21, 30]
						],
						7: [
							[0, 2],
							[21, 24]
						],
						8: [
							[0, 2],
							[21, 29]
						],
						9: [
							[0, 2],
							[21, 27]
						],
						23: [0, 1, [22, 29], 31],
						25: [
							[0, 4],
							[22, 32]
						],
						26: [0, 1, [21, 28]],
						27: [0, 1, [22, 30]],
						28: [0, 1, 22, 23],
						29: [0, 1, [22, 32]],
						31: [0, 2, 3, [22, 24]],
						34: [0, [21, 23]],
						33: [0, 21, [23, 25]],
						35: [0, [21, 28]]
					},
					54: {
						0: [0],
						1: [
							[0, 2],
							[21, 27]
						],
						21: [0, [21, 29], 32, 33],
						22: [0, [21, 29],
							[31, 33]
						],
						23: [0, 1, [22, 38]],
						24: [0, [21, 31]],
						25: [0, [21, 27]],
						26: [0, [21, 27]]
					},
					61: {
						0: [0],
						1: [
							[0, 4],
							[11, 16], 22, [24, 26]
						],
						2: [
							[0, 4], 22
						],
						3: [
							[0, 4],
							[21, 24],
							[26, 31]
						],
						4: [
							[0, 4],
							[22, 31], 81
						],
						5: [
							[0, 2],
							[21, 28], 81, 82
						],
						6: [
							[0, 2],
							[21, 32]
						],
						7: [
							[0, 2],
							[21, 30]
						],
						8: [
							[0, 2],
							[21, 31]
						],
						9: [
							[0, 2],
							[21, 29]
						],
						10: [
							[0, 2],
							[21, 26]
						]
					},
					62: {
						0: [0],
						1: [
							[0, 5], 11, [21, 23]
						],
						2: [0, 1],
						3: [
							[0, 2], 21
						],
						4: [
							[0, 3],
							[21, 23]
						],
						5: [
							[0, 3],
							[21, 25]
						],
						6: [
							[0, 2],
							[21, 23]
						],
						7: [
							[0, 2],
							[21, 25]
						],
						8: [
							[0, 2],
							[21, 26]
						],
						9: [
							[0, 2],
							[21, 24], 81, 82
						],
						10: [
							[0, 2],
							[21, 27]
						],
						11: [
							[0, 2],
							[21, 26]
						],
						12: [
							[0, 2],
							[21, 28]
						],
						24: [0, 21, [24, 29]],
						26: [0, 21, [23, 30]],
						29: [0, 1, [21, 27]],
						30: [0, 1, [21, 27]]
					},
					63: {
						0: [0],
						1: [
							[0, 5],
							[21, 23]
						],
						2: [0, 2, [21, 25]],
						21: [0, [21, 23],
							[26, 28]
						],
						22: [0, [21, 24]],
						23: [0, [21, 24]],
						25: [0, [21, 25]],
						26: [0, [21, 26]],
						27: [0, 1, [21, 26]],
						28: [
							[0, 2],
							[21, 23]
						]
					},
					64: {
						0: [0],
						1: [0, 1, [4, 6], 21, 22, 81],
						2: [
							[0, 3], 5, [21, 23]
						],
						3: [
							[0, 3],
							[21, 24], 81
						],
						4: [
							[0, 2],
							[21, 25]
						],
						5: [
							[0, 2], 21, 22
						]
					},
					65: {
						0: [0],
						1: [
							[0, 9], 21
						],
						2: [
							[0, 5]
						],
						21: [0, 1, 22, 23],
						22: [0, 1, 22, 23],
						23: [
							[0, 3],
							[23, 25], 27, 28
						],
						28: [0, 1, [22, 29]],
						29: [0, 1, [22, 29]],
						30: [0, 1, [22, 24]],
						31: [0, 1, [21, 31]],
						32: [0, 1, [21, 27]],
						40: [0, 2, 3, [21, 28]],
						42: [
							[0, 2], 21, [23, 26]
						],
						43: [0, 1, [21, 26]],
						90: [
							[0, 4]
						],
						27: [
							[0, 2], 22, 23
						]
					},
					71: {
						0: [0]
					},
					81: {
						0: [0]
					},
					82: {
						0: [0]
					}
				},
				d = parseInt(b.substr(0, 2), 10),
				e = parseInt(b.substr(2, 2), 10),
				f = parseInt(b.substr(4, 2), 10);
			if (!c[d] || !c[d][e]) return !1;
			for (var g = !1, h = c[d][e], i = 0; i < h.length; i++)
				if (a.isArray(h[i]) && h[i][0] <= f && f <= h[i][1] || !a.isArray(h[i]) && f === h[i]) {
					g = !0;
					break
				} if (!g) return !1;
			var j;
			j = 18 === b.length ? b.substr(6, 8) : "19" + b.substr(6, 6);
			var k = parseInt(j.substr(0, 4), 10),
				l = parseInt(j.substr(4, 2), 10),
				m = parseInt(j.substr(6, 2), 10);
			if (!FormValidation.Helper.date(k, l, m)) return !1;
			if (18 === b.length) {
				var n = 0,
					o = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
				for (i = 0; 17 > i; i++) n += parseInt(b.charAt(i), 10) * o[i];
				n = (12 - n % 11) % 11;
				var p = "X" !== b.charAt(17).toUpperCase() ? parseInt(b.charAt(17), 10) : 10;
				return p === n
			}
			return !0
		},
		_cz: function(a) {
			if (!/^\d{9,10}$/.test(a)) return !1;
			var b = 1900 + parseInt(a.substr(0, 2), 10),
				c = parseInt(a.substr(2, 2), 10) % 50 % 20,
				d = parseInt(a.substr(4, 2), 10);
			if (9 === a.length) {
				if (b >= 1980 && (b -= 100), b > 1953) return !1
			} else 1954 > b && (b += 100);
			if (!FormValidation.Helper.date(b, c, d)) return !1;
			if (10 === a.length) {
				var e = parseInt(a.substr(0, 9), 10) % 11;
				return 1985 > b && (e %= 10), e + "" === a.substr(9, 1)
			}
			return !0
		},
		_dk: function(a) {
			if (!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(a)) return !1;
			a = a.replace(/-/g, "");
			var b = parseInt(a.substr(0, 2), 10),
				c = parseInt(a.substr(2, 2), 10),
				d = parseInt(a.substr(4, 2), 10);
			switch (!0) {
				case -1 !== "5678".indexOf(a.charAt(6)) && d >= 58:
					d += 1800;
					break;
				case -1 !== "0123".indexOf(a.charAt(6)):
				case -1 !== "49".indexOf(a.charAt(6)) && d >= 37:
					d += 1900;
					break;
				default:
					d += 2e3
			}
			return FormValidation.Helper.date(d, c, b)
		},
		_ee: function(a) {
			return this._lt(a)
		},
		_es: function(a) {
			var b = /^[0-9]{8}[-]{0,1}[A-HJ-NP-TV-Z]$/.test(a),
				c = /^[XYZ][-]{0,1}[0-9]{7}[-]{0,1}[A-HJ-NP-TV-Z]$/.test(a),
				d = /^[A-HNPQS][-]{0,1}[0-9]{7}[-]{0,1}[0-9A-J]$/.test(a);
			if (!b && !c && !d) return !1;
			a = a.replace(/-/g, "");
			var e;
			if (b || c) {
				var f = "XYZ".indexOf(a.charAt(0));
				return -1 !== f && (a = f + a.substr(1) + ""), e = parseInt(a.substr(0, 8), 10), e = "TRWAGMYFPDXBNJZSQVHLCKE" [e %
					23
				], e === a.substr(8, 1)
			}
			e = a.substr(1, 7);
			for (var g = a[0], h = a.substr(-1), i = 0, j = 0; j < e.length; j++)
				if (j % 2 !== 0) i += parseInt(e[j], 10);
				else {
					var k = "" + 2 * parseInt(e[j], 10);
					i += parseInt(k[0], 10), 2 === k.length && (i += parseInt(k[1], 10))
				} var l = i - 10 * Math.floor(i / 10);
			return 0 !== l && (l = 10 - l), -1 !== "KQS".indexOf(g) ? h === "JABCDEFGHI" [l] : -1 !== "ABEH".indexOf(g) ? h ===
				"" + l : h === "" + l || h === "JABCDEFGHI" [l]
		},
		_fi: function(a) {
			if (!/^[0-9]{6}[-+A][0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/.test(a)) return !1;
			var b = parseInt(a.substr(0, 2), 10),
				c = parseInt(a.substr(2, 2), 10),
				d = parseInt(a.substr(4, 2), 10),
				e = {
					"+": 1800,
					"-": 1900,
					A: 2e3
				};
			if (d = e[a.charAt(6)] + d, !FormValidation.Helper.date(d, c, b)) return !1;
			var f = parseInt(a.substr(7, 3), 10);
			if (2 > f) return !1;
			var g = a.substr(0, 6) + a.substr(7, 3) + "";
			return g = parseInt(g, 10), "0123456789ABCDEFHJKLMNPRSTUVWXY".charAt(g % 31) === a.charAt(10)
		},
		_hr: function(a) {
			return /^[0-9]{11}$/.test(a) ? FormValidation.Helper.mod11And10(a) : !1
		},
		_ie: function(a) {
			if (!/^\d{7}[A-W][AHWTX]?$/.test(a)) return !1;
			var b = function(a) {
				for (; a.length < 7;) a = "0" + a;
				for (var b = "WABCDEFGHIJKLMNOPQRSTUV", c = 0, d = 0; 7 > d; d++) c += parseInt(a.charAt(d), 10) * (8 - d);
				return c += 9 * b.indexOf(a.substr(7)), b[c % 23]
			};
			return 9 !== a.length || "A" !== a.charAt(8) && "H" !== a.charAt(8) ? a.charAt(7) === b(a.substr(0, 7)) : a.charAt(
				7) === b(a.substr(0, 7) + a.substr(8) + "")
		},
		_is: function(a) {
			if (!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(a)) return !1;
			a = a.replace(/-/g, "");
			var b = parseInt(a.substr(0, 2), 10),
				c = parseInt(a.substr(2, 2), 10),
				d = parseInt(a.substr(4, 2), 10),
				e = parseInt(a.charAt(9), 10);
			if (d = 9 === e ? 1900 + d : 100 * (20 + e) + d, !FormValidation.Helper.date(d, c, b, !0)) return !1;
			for (var f = 0, g = [3, 2, 7, 6, 5, 4, 3, 2], h = 0; 8 > h; h++) f += parseInt(a.charAt(h), 10) * g[h];
			return f = 11 - f % 11, f + "" === a.charAt(8)
		},
		_lt: function(a) {
			if (!/^[0-9]{11}$/.test(a)) return !1;
			var b = parseInt(a.charAt(0), 10),
				c = parseInt(a.substr(1, 2), 10),
				d = parseInt(a.substr(3, 2), 10),
				e = parseInt(a.substr(5, 2), 10),
				f = b % 2 === 0 ? 17 + b / 2 : 17 + (b + 1) / 2;
			if (c = 100 * f + c, !FormValidation.Helper.date(c, d, e, !0)) return !1;
			for (var g = 0, h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1], i = 0; 10 > i; i++) g += parseInt(a.charAt(i), 10) * h[i];
			if (g %= 11, 10 !== g) return g + "" === a.charAt(10);
			for (g = 0, h = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3], i = 0; 10 > i; i++) g += parseInt(a.charAt(i), 10) * h[i];
			return g %= 11, 10 === g && (g = 0), g + "" === a.charAt(10)
		},
		_lv: function(a) {
			if (!/^[0-9]{6}[-]{0,1}[0-9]{5}$/.test(a)) return !1;
			a = a.replace(/\D/g, "");
			var b = parseInt(a.substr(0, 2), 10),
				c = parseInt(a.substr(2, 2), 10),
				d = parseInt(a.substr(4, 2), 10);
			if (d = d + 1800 + 100 * parseInt(a.charAt(6), 10), !FormValidation.Helper.date(d, c, b, !0)) return !1;
			for (var e = 0, f = [10, 5, 8, 4, 2, 1, 6, 3, 7, 9], g = 0; 10 > g; g++) e += parseInt(a.charAt(g), 10) * f[g];
			return e = (e + 1) % 11 % 10, e + "" === a.charAt(10)
		},
		_nl: function(a) {
			for (; a.length < 9;) a = "0" + a;
			if (!/^[0-9]{4}[.]{0,1}[0-9]{2}[.]{0,1}[0-9]{3}$/.test(a)) return !1;
			if (a = a.replace(/\./g, ""), 0 === parseInt(a, 10)) return !1;
			for (var b = 0, c = a.length, d = 0; c - 1 > d; d++) b += (9 - d) * parseInt(a.charAt(d), 10);
			return b %= 11, 10 === b && (b = 0), b + "" === a.charAt(c - 1)
		},
		_pl: function(a) {
			if (!/^[0-9]{11}$/.test(a)) return !1;
			for (var b = 0, c = a.length, d = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 7], e = 0; c - 1 > e; e++) b += d[e] * parseInt(a
				.charAt(e), 10);
			return b %= 10, 0 === b && (b = 10), b = 10 - b, b + "" === a.charAt(c - 1)
		},
		_ro: function(a) {
			if (!/^[0-9]{13}$/.test(a)) return !1;
			var b = parseInt(a.charAt(0), 10);
			if (0 === b || 7 === b || 8 === b) return !1;
			var c = parseInt(a.substr(1, 2), 10),
				d = parseInt(a.substr(3, 2), 10),
				e = parseInt(a.substr(5, 2), 10),
				f = {
					1: 1900,
					2: 1900,
					3: 1800,
					4: 1800,
					5: 2e3,
					6: 2e3
				};
			if (e > 31 && d > 12) return !1;
			if (9 !== b && (c = f[b + ""] + c, !FormValidation.Helper.date(c, d, e))) return !1;
			for (var g = 0, h = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9], i = a.length, j = 0; i - 1 > j; j++) g += parseInt(a.charAt(
				j), 10) * h[j];
			return g %= 11, 10 === g && (g = 1), g + "" === a.charAt(i - 1)
		},
		_se: function(a) {
			if (!/^[0-9]{10}$/.test(a) && !/^[0-9]{6}[-|+][0-9]{4}$/.test(a)) return !1;
			a = a.replace(/[^0-9]/g, "");
			var b = parseInt(a.substr(0, 2), 10) + 1900,
				c = parseInt(a.substr(2, 2), 10),
				d = parseInt(a.substr(4, 2), 10);
			return FormValidation.Helper.date(b, c, d) ? FormValidation.Helper.luhn(a) : !1
		},
		_sk: function(a) {
			return this._cz(a)
		},
		_sm: function(a) {
			return /^\d{5}$/.test(a)
		},
		_th: function(a) {
			if (13 !== a.length) return !1;
			for (var b = 0, c = 0; 12 > c; c++) b += parseInt(a.charAt(c), 10) * (13 - c);
			return (11 - b % 11) % 10 === parseInt(a.charAt(12), 10)
		},
		_za: function(a) {
			if (!/^[0-9]{10}[0|1][8|9][0-9]$/.test(a)) return !1;
			var b = parseInt(a.substr(0, 2), 10),
				c = (new Date).getFullYear() % 100,
				d = parseInt(a.substr(2, 2), 10),
				e = parseInt(a.substr(4, 2), 10);
			return b = b >= c ? b + 1900 : b + 2e3, FormValidation.Helper.date(b, d, e) ? FormValidation.Helper.luhn(a) : !1
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			identical: {
				"default": "Please enter the same value"
			}
		}
	}), FormValidation.Validator.identical = {
		html5Attributes: {
			message: "message",
			field: "field"
		},
		init: function(a, b, c) {
			var d = a.getFieldElements(c.field);
			a.onLiveChange(d, "live_identical", function() {
				var c = a.getStatus(b, "identical");
				c !== a.STATUS_NOT_VALIDATED && a.revalidateField(b)
			})
		},
		destroy: function(a, b, c) {
			var d = a.getFieldElements(c.field);
			a.offLiveChange(d, "live_identical")
		},
		validate: function(a, b, c) {
			var d = a.getFieldValue(b, "identical"),
				e = a.getFieldElements(c.field);
			if (null === e || 0 === e.length || !e.val() || !b.val()) return !0;
			var f = a.getFieldValue(e, "identical");
			return d === f ? (a.updateStatus(e, a.STATUS_VALID, "identical"), !0) : !1
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			imei: {
				"default": "Please enter a valid IMEI number"
			}
		}
	}), FormValidation.Validator.imei = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "imei");
			if ("" === c) return !0;
			switch (!0) {
				case /^\d{15}$/.test(c):
				case /^\d{2}-\d{6}-\d{6}-\d{1}$/.test(c):
				case /^\d{2}\s\d{6}\s\d{6}\s\d{1}$/.test(c):
					return c = c.replace(/[^0-9]/g, ""), FormValidation.Helper.luhn(c);
				case /^\d{14}$/.test(c):
				case /^\d{16}$/.test(c):
				case /^\d{2}-\d{6}-\d{6}(|-\d{2})$/.test(c):
				case /^\d{2}\s\d{6}\s\d{6}(|\s\d{2})$/.test(c):
					return !0;
				default:
					return !1
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			imo: {
				"default": "Please enter a valid IMO number"
			}
		}
	}), FormValidation.Validator.imo = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "imo");
			if ("" === c) return !0;
			if (!/^IMO \d{7}$/i.test(c)) return !1;
			for (var d = 0, e = c.replace(/^.*(\d{7})$/, "$1"), f = 6; f >= 1; f--) d += e.slice(6 - f, -f) * (f + 1);
			return d % 10 === parseInt(e.charAt(6), 10)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			integer: {
				"default": "Please enter a valid number"
			}
		}
	}), FormValidation.Validator.integer = {
		enableByHtml5: function(a) {
			return "number" === a.attr("type") && (void 0 === a.attr("step") || a.attr("step") % 1 === 0)
		},
		validate: function(a, b) {
			if (this.enableByHtml5(b) && b.get(0).validity && b.get(0).validity.badInput === !0) return !1;
			var c = a.getFieldValue(b, "integer");
			return "" === c ? !0 : /^(?:-?(?:0|[1-9][0-9]*))$/.test(c)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			ip: {
				"default": "Please enter a valid IP address",
				ipv4: "Please enter a valid IPv4 address",
				ipv6: "Please enter a valid IPv6 address"
			}
		}
	}), FormValidation.Validator.ip = {
		html5Attributes: {
			message: "message",
			ipv4: "ipv4",
			ipv6: "ipv6"
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "ip");
			if ("" === e) return !0;
			d = a.extend({}, {
				ipv4: !0,
				ipv6: !0
			}, d);
			var f, g = b.getLocale(),
				h = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
				i =
				/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,
				j = !1;
			switch (!0) {
				case d.ipv4 && !d.ipv6:
					j = h.test(e), f = d.message || FormValidation.I18n[g].ip.ipv4;
					break;
				case !d.ipv4 && d.ipv6:
					j = i.test(e), f = d.message || FormValidation.I18n[g].ip.ipv6;
					break;
				case d.ipv4 && d.ipv6:
				default:
					j = h.test(e) || i.test(e), f = d.message || FormValidation.I18n[g].ip["default"]
			}
			return {
				valid: j,
				message: f
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			isbn: {
				"default": "Please enter a valid ISBN number"
			}
		}
	}), FormValidation.Validator.isbn = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "isbn");
			if ("" === c) return !0;
			var d;
			switch (!0) {
				case /^\d{9}[\dX]$/.test(c):
				case 13 === c.length && /^(\d+)-(\d+)-(\d+)-([\dX])$/.test(c):
				case 13 === c.length && /^(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(c):
					d = "ISBN10";
					break;
				case /^(978|979)\d{9}[\dX]$/.test(c):
				case 17 === c.length && /^(978|979)-(\d+)-(\d+)-(\d+)-([\dX])$/.test(c):
				case 17 === c.length && /^(978|979)\s(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(c):
					d = "ISBN13";
					break;
				default:
					return !1
			}
			c = c.replace(/[^0-9X]/gi, "");
			var e, f, g = c.split(""),
				h = g.length,
				i = 0;
			switch (d) {
				case "ISBN10":
					for (i = 0, e = 0; h - 1 > e; e++) i += parseInt(g[e], 10) * (10 - e);
					return f = 11 - i % 11, 11 === f ? f = 0 : 10 === f && (f = "X"), f + "" === g[h - 1];
				case "ISBN13":
					for (i = 0, e = 0; h - 1 > e; e++) i += e % 2 === 0 ? parseInt(g[e], 10) : 3 * parseInt(g[e], 10);
					return f = 10 - i % 10, 10 === f && (f = "0"), f + "" === g[h - 1];
				default:
					return !1
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			isin: {
				"default": "Please enter a valid ISIN number"
			}
		}
	}), FormValidation.Validator.isin = {
		COUNTRY_CODES: "AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW",
		validate: function(a, b) {
			var c = a.getFieldValue(b, "isin");
			if ("" === c) return !0;
			c = c.toUpperCase();
			var d = new RegExp("^(" + this.COUNTRY_CODES + ")[0-9A-Z]{10}$");
			if (!d.test(c)) return !1;
			for (var e = "", f = c.length, g = 0; f - 1 > g; g++) {
				var h = c.charCodeAt(g);
				e += h > 57 ? (h - 55).toString() : c.charAt(g)
			}
			var i = "",
				j = e.length,
				k = j % 2 !== 0 ? 0 : 1;
			for (g = 0; j > g; g++) i += parseInt(e[g], 10) * (g % 2 === k ? 2 : 1) + "";
			var l = 0;
			for (g = 0; g < i.length; g++) l += parseInt(i.charAt(g), 10);
			return l = (10 - l % 10) % 10, l + "" === c.charAt(f - 1)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			ismn: {
				"default": "Please enter a valid ISMN number"
			}
		}
	}), FormValidation.Validator.ismn = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "ismn");
			if ("" === c) return !0;
			var d;
			switch (!0) {
				case /^M\d{9}$/.test(c):
				case /^M-\d{4}-\d{4}-\d{1}$/.test(c):
				case /^M\s\d{4}\s\d{4}\s\d{1}$/.test(c):
					d = "ISMN10";
					break;
				case /^9790\d{9}$/.test(c):
				case /^979-0-\d{4}-\d{4}-\d{1}$/.test(c):
				case /^979\s0\s\d{4}\s\d{4}\s\d{1}$/.test(c):
					d = "ISMN13";
					break;
				default:
					return !1
			}
			"ISMN10" === d && (c = "9790" + c.substr(1)), c = c.replace(/[^0-9]/gi, "");
			for (var e = c.length, f = 0, g = [1, 3], h = 0; e - 1 > h; h++) f += parseInt(c.charAt(h), 10) * g[h % 2];
			return f = 10 - f % 10, f + "" === c.charAt(e - 1)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			issn: {
				"default": "Please enter a valid ISSN number"
			}
		}
	}), FormValidation.Validator.issn = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "issn");
			if ("" === c) return !0;
			if (!/^\d{4}\-\d{3}[\dX]$/.test(c)) return !1;
			c = c.replace(/[^0-9X]/gi, "");
			var d = c.split(""),
				e = d.length,
				f = 0;
			"X" === d[7] && (d[7] = 10);
			for (var g = 0; e > g; g++) f += parseInt(d[g], 10) * (8 - g);
			return f % 11 === 0
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			lessThan: {
				"default": "Please enter a value less than or equal to %s",
				notInclusive: "Please enter a value less than %s"
			}
		}
	}), FormValidation.Validator.lessThan = {
		html5Attributes: {
			message: "message",
			value: "value",
			inclusive: "inclusive"
		},
		enableByHtml5: function(a) {
			var b = a.attr("type"),
				c = a.attr("max");
			return c && "date" !== b ? {
				value: c
			} : !1
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "lessThan");
			if ("" === e) return !0;
			if (e = this._format(e), !a.isNumeric(e)) return !1;
			var f = b.getLocale(),
				g = a.isNumeric(d.value) ? d.value : b.getDynamicOption(c, d.value),
				h = this._format(g);
			return e = parseFloat(e), d.inclusive === !0 || void 0 === d.inclusive ? {
				valid: h >= e,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].lessThan["default"], g)
			} : {
				valid: h > e,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].lessThan.notInclusive, g)
			}
		},
		_format: function(a) {
			return (a + "").replace(",", ".")
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			mac: {
				"default": "Please enter a valid MAC address"
			}
		}
	}), FormValidation.Validator.mac = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "mac");
			return "" === c ? !0 : /^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$/.test(c)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			meid: {
				"default": "Please enter a valid MEID number"
			}
		}
	}), FormValidation.Validator.meid = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "meid");
			if ("" === c) return !0;
			switch (!0) {
				case /^[0-9A-F]{15}$/i.test(c):
				case /^[0-9A-F]{2}[- ][0-9A-F]{6}[- ][0-9A-F]{6}[- ][0-9A-F]$/i.test(c):
				case /^\d{19}$/.test(c):
				case /^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}[- ]\d$/.test(c):
					var d = c.charAt(c.length - 1);
					if (c = c.replace(/[- ]/g, ""), c.match(/^\d*$/i)) return FormValidation.Helper.luhn(c);
					c = c.slice(0, -1);
					for (var e = "", f = 1; 13 >= f; f += 2) e += (2 * parseInt(c.charAt(f), 16)).toString(16);
					var g = 0;
					for (f = 0; f < e.length; f++) g += parseInt(e.charAt(f), 16);
					return g % 10 === 0 ? "0" === d : d === (2 * (10 * Math.floor((g + 10) / 10) - g)).toString(16);
				case /^[0-9A-F]{14}$/i.test(c):
				case /^[0-9A-F]{2}[- ][0-9A-F]{6}[- ][0-9A-F]{6}$/i.test(c):
				case /^\d{18}$/.test(c):
				case /^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}$/.test(c):
					return !0;
				default:
					return !1
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			notEmpty: {
				"default": "Please enter a value"
			}
		}
	}), FormValidation.Validator.notEmpty = {
		enableByHtml5: function(a) {
			var b = a.attr("required") + "";
			return "required" === b || "true" === b
		},
		validate: function(b, c) {
			var d = c.attr("type");
			if ("radio" === d || "checkbox" === d) {
				var e = b.getNamespace();
				return b.getFieldElements(c.attr("data-" + e + "-field")).filter(":checked").length > 0
			}
			if ("number" === d && c.get(0).validity && c.get(0).validity.badInput === !0) return !0;
			var f = b.getFieldValue(c, "notEmpty");
			return "" !== a.trim(f)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			numeric: {
				"default": "Please enter a valid float number"
			}
		}
	}), FormValidation.Validator.numeric = {
		html5Attributes: {
			message: "message",
			separator: "separator"
		},
		enableByHtml5: function(a) {
			return "number" === a.attr("type") && void 0 !== a.attr("step") && a.attr("step") % 1 !== 0
		},
		validate: function(a, b, c) {
			if (this.enableByHtml5(b) && b.get(0).validity && b.get(0).validity.badInput === !0) return !1;
			var d = a.getFieldValue(b, "numeric");
			if ("" === d) return !0;
			var e = c.separator || ".";
			return "." !== e && (d = d.replace(e, ".")), !isNaN(parseFloat(d)) && isFinite(d)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			phone: {
				"default": "Please enter a valid phone number",
				country: "Please enter a valid phone number in %s",
				countries: {
					AE: "United Arab Emirates",
					BG: "Bulgaria",
					BR: "Brazil",
					CN: "China",
					CZ: "Czech Republic",
					DE: "Germany",
					DK: "Denmark",
					ES: "Spain",
					FR: "France",
					GB: "United Kingdom",
					IN: "India",
					MA: "Morocco",
					NL: "Netherlands",
					PK: "Pakistan",
					RO: "Romania",
					RU: "Russia",
					SK: "Slovakia",
					TH: "Thailand",
					US: "USA",
					VE: "Venezuela"
				}
			}
		}
	}), FormValidation.Validator.phone = {
		html5Attributes: {
			message: "message",
			country: "country"
		},
		COUNTRY_CODES: ["AE", "BG", "BR", "CN", "CZ", "DE", "DK", "ES", "FR", "GB", "IN", "MA", "NL", "PK", "RO", "RU", "SK",
			"TH", "US", "VE"
		],
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "phone");
			if ("" === e) return !0;
			var f = b.getLocale(),
				g = d.country;
			if (("string" != typeof g || -1 === a.inArray(g, this.COUNTRY_CODES)) && (g = b.getDynamicOption(c, g)), !g || -1 ===
				a.inArray(g.toUpperCase(), this.COUNTRY_CODES)) return !0;
			var h = !0;
			switch (g.toUpperCase()) {
				case "AE":
					e = a.trim(e), h =
						/^(((\+|00)?971[\s\.-]?(\(0\)[\s\.-]?)?|0)(\(5(0|2|5|6)\)|5(0|2|5|6)|2|3|4|6|7|9)|60)([\s\.-]?[0-9]){7}$/.test(
							e);
					break;
				case "BG":
					e = e.replace(/\+|\s|-|\/|\(|\)/gi, ""), h =
						/^(0|359|00)(((700|900)[0-9]{5}|((800)[0-9]{5}|(800)[0-9]{4}))|(87|88|89)([0-9]{7})|((2[0-9]{7})|(([3-9][0-9])(([0-9]{6})|([0-9]{5})))))$/
						.test(e);
					break;
				case "BR":
					e = a.trim(e), h =
						/^(([\d]{4}[-.\s]{1}[\d]{2,3}[-.\s]{1}[\d]{2}[-.\s]{1}[\d]{2})|([\d]{4}[-.\s]{1}[\d]{3}[-.\s]{1}[\d]{4})|((\(?\+?[0-9]{2}\)?\s?)?(\(?\d{2}\)?\s?)?\d{4,5}[-.\s]?\d{4}))$/
						.test(e);
					break;
				case "CN":
					e = a.trim(e), h =
						/^((00|\+)?(86(?:-| )))?((\d{11})|(\d{3}[- ]{1}\d{4}[- ]{1}\d{4})|((\d{2,4}[- ]){1}(\d{7,8}|(\d{3,4}[- ]{1}\d{4}))([- ]{1}\d{1,4})?))$/
						.test(e);
					break;
				case "CZ":
					h = /^(((00)([- ]?)|\+)(420)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(e);
					break;
				case "DE":
					e = a.trim(e), h =
						/^(((((((00|\+)49[ \-/]?)|0)[1-9][0-9]{1,4})[ \-/]?)|((((00|\+)49\()|\(0)[1-9][0-9]{1,4}\)[ \-/]?))[0-9]{1,7}([ \-/]?[0-9]{1,5})?)$/
						.test(e);
					break;
				case "DK":
					e = a.trim(e), h = /^(\+45|0045|\(45\))?\s?[2-9](\s?\d){7}$/.test(e);
					break;
				case "ES":
					e = a.trim(e), h = /^(?:(?:(?:\+|00)34\D?))?(?:5|6|7|8|9)(?:\d\D?){8}$/.test(e);
					break;
				case "FR":
					e = a.trim(e), h = /^(?:(?:(?:\+|00)33[ ]?(?:\(0\)[ ]?)?)|0){1}[1-9]{1}([ .-]?)(?:\d{2}\1?){3}\d{2}$/.test(e);
					break;
				case "GB":
					e = a.trim(e), h =
						/^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$/
						.test(e);
					break;
				case "IN":
					e = a.trim(e), h = /((\+?)((0[ -]+)*|(91 )*)(\d{12}|\d{10}))|\d{5}([- ]*)\d{6}/.test(e);
					break;
				case "MA":
					e = a.trim(e), h =
						/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/
						.test(e);
					break;
				case "NL":
					e = a.trim(e), h =
						/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9])((\s|\s?-\s?)?[0-9])((\s|\s?-\s?)?[0-9])\s?[0-9]\s?[0-9]\s?[0-9]\s?[0-9]\s?[0-9]$/gm
						.test(e);
					break;
				case "PK":
					e = a.trim(e), h = /^0?3[0-9]{2}[0-9]{7}$/.test(e);
					break;
				case "RO":
					h = /^(\+4|)?(07[0-8]{1}[0-9]{1}|02[0-9]{2}|03[0-9]{2}){1}?(\s|\.|\-)?([0-9]{3}(\s|\.|\-|)){2}$/g.test(e);
					break;
				case "RU":
					h = /^((8|\+7|007)[\-\.\/ ]?)?([\(\/\.]?\d{3}[\)\/\.]?[\-\.\/ ]?)?[\d\-\.\/ ]{7,10}$/g.test(e);
					break;
				case "SK":
					h = /^(((00)([- ]?)|\+)(421)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(e);
					break;
				case "TH":
					h = /^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4})$/.test(e);
					break;
				case "VE":
					e = a.trim(e), h = /^0(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789])|4(?:1[246]|2[46]))\d{7}$/
						.test(e);
					break;
				case "US":
				default:
					h = /^(?:(1\-?)|(\+1 ?))?\(?(\d{3})[\)\-\.]?(\d{3})[\-\.]?(\d{4})$/.test(e)
			}
			return {
				valid: h,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].phone.country, FormValidation.I18n[f].phone
					.countries[g])
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			regexp: {
				"default": "Please enter a value matching the pattern"
			}
		}
	}), FormValidation.Validator.regexp = {
		html5Attributes: {
			message: "message",
			regexp: "regexp"
		},
		enableByHtml5: function(a) {
			var b = a.attr("pattern");
			return b ? {
				regexp: b
			} : !1
		},
		validate: function(a, b, c) {
			var d = a.getFieldValue(b, "regexp");
			if ("" === d) return !0;
			var e = "string" == typeof c.regexp ? new RegExp(c.regexp) : c.regexp;
			return e.test(d)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			remote: {
				"default": "Please enter a valid value"
			}
		}
	}), FormValidation.Validator.remote = {
		html5Attributes: {
			crossdomain: "crossDomain",
			data: "data",
			datatype: "dataType",
			delay: "delay",
			message: "message",
			name: "name",
			type: "type",
			url: "url",
			validkey: "validKey"
		},
		destroy: function(a, b) {
			var c = a.getNamespace(),
				d = b.data(c + ".remote.timer");
			d && (clearTimeout(d), b.removeData(c + ".remote.timer"))
		},
		validate: function(b, c, d) {
			function e() {
				var b = a.ajax(m);
				return b.success(function(a) {
					a.valid = a[l] === !0 || "true" === a[l] ? !0 : a[l] === !1 || "false" === a[l] ? !1 : null, h.resolve(c,
						"remote", a)
				}).error(function() {
					h.resolve(c, "remote", {
						valid: !1
					})
				}), h.fail(function() {
					b.abort()
				}), h
			}
			var f = b.getNamespace(),
				g = b.getFieldValue(c, "remote"),
				h = new a.Deferred;
			if ("" === g) return h.resolve(c, "remote", {
				valid: !0
			}), h;
			var i = c.attr("data-" + f + "-field"),
				j = d.data || {},
				k = d.url,
				l = d.validKey || "valid";
			"function" == typeof j && (j = j.call(this, b)), "string" == typeof j && (j = JSON.parse(j)), "function" == typeof k &&
				(k = k.call(this, b)), j[d.name || i] = g;
			var m = {
				data: j,
				dataType: d.dataType || "json",
				headers: d.headers || {},
				type: d.type || "GET",
				url: k
			};
			return null !== d.crossDomain && (m.crossDomain = d.crossDomain === !0 || "true" === d.crossDomain), d.delay ? (c.data(
					f + ".remote.timer") && clearTimeout(c.data(f + ".remote.timer")), c.data(f + ".remote.timer", setTimeout(e, d.delay)),
				h) : e()
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			rtn: {
				"default": "Please enter a valid RTN number"
			}
		}
	}), FormValidation.Validator.rtn = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "rtn");
			if ("" === c) return !0;
			if (!/^\d{9}$/.test(c)) return !1;
			for (var d = 0, e = 0; e < c.length; e += 3) d += 3 * parseInt(c.charAt(e), 10) + 7 * parseInt(c.charAt(e + 1), 10) +
				parseInt(c.charAt(e + 2), 10);
			return 0 !== d && d % 10 === 0
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			sedol: {
				"default": "Please enter a valid SEDOL number"
			}
		}
	}), FormValidation.Validator.sedol = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "sedol");
			if ("" === c) return !0;
			if (c = c.toUpperCase(), !/^[0-9A-Z]{7}$/.test(c)) return !1;
			for (var d = 0, e = [1, 3, 1, 7, 3, 9, 1], f = c.length, g = 0; f - 1 > g; g++) d += e[g] * parseInt(c.charAt(g),
				36);
			return d = (10 - d % 10) % 10, d + "" === c.charAt(f - 1)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			siren: {
				"default": "Please enter a valid SIREN number"
			}
		}
	}), FormValidation.Validator.siren = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "siren");
			return "" === c ? !0 : /^\d{9}$/.test(c) ? FormValidation.Helper.luhn(c) : !1
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			siret: {
				"default": "Please enter a valid SIRET number"
			}
		}
	}), FormValidation.Validator.siret = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "siret");
			if ("" === c) return !0;
			for (var d, e = 0, f = c.length, g = 0; f > g; g++) d = parseInt(c.charAt(g), 10), g % 2 === 0 && (d = 2 * d, d >
				9 && (d -= 9)), e += d;
			return e % 10 === 0
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			step: {
				"default": "Please enter a valid step of %s"
			}
		}
	}), FormValidation.Validator.step = {
		html5Attributes: {
			message: "message",
			base: "baseValue",
			step: "step"
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "step");
			if ("" === e) return !0;
			if (d = a.extend({}, {
					baseValue: 0,
					step: 1
				}, d), e = parseFloat(e), !a.isNumeric(e)) return !1;
			var f = function(a, b) {
					var c = Math.pow(10, b);
					a *= c;
					var d = a > 0 | -(0 > a),
						e = a % 1 === .5 * d;
					return e ? (Math.floor(a) + (d > 0)) / c : Math.round(a) / c
				},
				g = function(a, b) {
					if (0 === b) return 1;
					var c = (a + "").split("."),
						d = (b + "").split("."),
						e = (1 === c.length ? 0 : c[1].length) + (1 === d.length ? 0 : d[1].length);
					return f(a - b * Math.floor(a / b), e)
				},
				h = b.getLocale(),
				i = g(e - d.baseValue, d.step);
			return {
				valid: 0 === i || i === d.step,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[h].step["default"], [d.step])
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			stringCase: {
				"default": "Please enter only lowercase characters",
				upper: "Please enter only uppercase characters"
			}
		}
	}), FormValidation.Validator.stringCase = {
		html5Attributes: {
			message: "message",
			"case": "case"
		},
		validate: function(a, b, c) {
			var d = a.getFieldValue(b, "stringCase");
			if ("" === d) return !0;
			var e = a.getLocale(),
				f = (c["case"] || "lower").toLowerCase();
			return {
				valid: "upper" === f ? d === d.toUpperCase() : d === d.toLowerCase(),
				message: c.message || ("upper" === f ? FormValidation.I18n[e].stringCase.upper : FormValidation.I18n[e].stringCase[
					"default"])
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			stringLength: {
				"default": "Please enter a value with valid length",
				less: "Please enter less than %s characters",
				more: "Please enter more than %s characters",
				between: "Please enter value between %s and %s characters long"
			}
		}
	}), FormValidation.Validator.stringLength = {
		html5Attributes: {
			message: "message",
			min: "min",
			max: "max",
			trim: "trim",
			utf8bytes: "utf8Bytes"
		},
		enableByHtml5: function(b) {
			var c = {},
				d = b.attr("maxlength"),
				e = b.attr("minlength");
			return d && (c.max = parseInt(d, 10)), e && (c.min = parseInt(e, 10)), a.isEmptyObject(c) ? !1 : c
		},
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "stringLength");
			if ((d.trim === !0 || "true" === d.trim) && (e = a.trim(e)), "" === e) return !0;
			var f = b.getLocale(),
				g = a.isNumeric(d.min) ? d.min : b.getDynamicOption(c, d.min),
				h = a.isNumeric(d.max) ? d.max : b.getDynamicOption(c, d.max),
				i = function(a) {
					for (var b = a.length, c = a.length - 1; c >= 0; c--) {
						var d = a.charCodeAt(c);
						d > 127 && 2047 >= d ? b++ : d > 2047 && 65535 >= d && (b += 2), d >= 56320 && 57343 >= d && c--
					}
					return b
				},
				j = d.utf8Bytes ? i(e) : e.length,
				k = !0,
				l = d.message || FormValidation.I18n[f].stringLength["default"];
			switch ((g && j < parseInt(g, 10) || h && j > parseInt(h, 10)) && (k = !1), !0) {
				case !!g && !!h:
					l = FormValidation.Helper.format(d.message || FormValidation.I18n[f].stringLength.between, [parseInt(g, 10),
						parseInt(h, 10)
					]);
					break;
				case !!g:
					l = FormValidation.Helper.format(d.message || FormValidation.I18n[f].stringLength.more, parseInt(g, 10));
					break;
				case !!h:
					l = FormValidation.Helper.format(d.message || FormValidation.I18n[f].stringLength.less, parseInt(h, 10))
			}
			return {
				valid: k,
				message: l
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			uri: {
				"default": "Please enter a valid URI"
			}
		}
	}), FormValidation.Validator.uri = {
		html5Attributes: {
			message: "message",
			allowlocal: "allowLocal",
			allowemptyprotocol: "allowEmptyProtocol",
			protocol: "protocol"
		},
		enableByHtml5: function(a) {
			return "url" === a.attr("type")
		},
		validate: function(a, b, c) {
			var d = a.getFieldValue(b, "uri");
			if ("" === d) return !0;
			var e = c.allowLocal === !0 || "true" === c.allowLocal,
				f = c.allowEmptyProtocol === !0 || "true" === c.allowEmptyProtocol,
				g = (c.protocol || "http, https, ftp").split(",").join("|").replace(/\s/g, ""),
				h = new RegExp("^(?:(?:" + g + ")://)" + (f ? "?" : "") + "(?:\\S+(?::\\S*)?@)?(?:" + (e ? "" :
						"(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})"
					) +
					"(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9])*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" +
					(e ? "?" : "") + ")(?::\\d{2,5})?(?:/[^\\s]*)?$", "i");
			return h.test(d)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			uuid: {
				"default": "Please enter a valid UUID number",
				version: "Please enter a valid UUID version %s number"
			}
		}
	}), FormValidation.Validator.uuid = {
		html5Attributes: {
			message: "message",
			version: "version"
		},
		validate: function(a, b, c) {
			var d = a.getFieldValue(b, "uuid");
			if ("" === d) return !0;
			var e = a.getLocale(),
				f = {
					3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
					4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
					5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
					all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i
				},
				g = c.version ? c.version + "" : "all";
			return {
				valid: null === f[g] ? !0 : f[g].test(d),
				message: c.version ? FormValidation.Helper.format(c.message || FormValidation.I18n[e].uuid.version, c.version) : c
					.message || FormValidation.I18n[e].uuid["default"]
			}
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			vat: {
				"default": "Please enter a valid VAT number",
				country: "Please enter a valid VAT number in %s",
				countries: {
					AT: "Austria",
					BE: "Belgium",
					BG: "Bulgaria",
					BR: "Brazil",
					CH: "Switzerland",
					CY: "Cyprus",
					CZ: "Czech Republic",
					DE: "Germany",
					DK: "Denmark",
					EE: "Estonia",
					ES: "Spain",
					FI: "Finland",
					FR: "France",
					GB: "United Kingdom",
					GR: "Greek",
					EL: "Greek",
					HU: "Hungary",
					HR: "Croatia",
					IE: "Ireland",
					IS: "Iceland",
					IT: "Italy",
					LT: "Lithuania",
					LU: "Luxembourg",
					LV: "Latvia",
					MT: "Malta",
					NL: "Netherlands",
					NO: "Norway",
					PL: "Poland",
					PT: "Portugal",
					RO: "Romania",
					RU: "Russia",
					RS: "Serbia",
					SE: "Sweden",
					SI: "Slovenia",
					SK: "Slovakia",
					VE: "Venezuela",
					ZA: "South Africa"
				}
			}
		}
	}), FormValidation.Validator.vat = {
		html5Attributes: {
			message: "message",
			country: "country"
		},
		COUNTRY_CODES: ["AT", "BE", "BG", "BR", "CH", "CY", "CZ", "DE", "DK", "EE", "EL", "ES", "FI", "FR", "GB", "GR", "HR",
			"HU", "IE", "IS", "IT", "LT", "LU", "LV", "MT", "NL", "NO", "PL", "PT", "RO", "RU", "RS", "SE", "SK", "SI", "VE",
			"ZA"
		],
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "vat");
			if ("" === e) return !0;
			var f = b.getLocale(),
				g = d.country;
			if (g ? ("string" != typeof g || -1 === a.inArray(g.toUpperCase(), this.COUNTRY_CODES)) && (g = b.getDynamicOption(
					c, g)) : g = e.substr(0, 2), -1 === a.inArray(g, this.COUNTRY_CODES)) return !0;
			var h = ["_", g.toLowerCase()].join("");
			return this[h](e) ? !0 : {
				valid: !1,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].vat.country, FormValidation.I18n[f].vat
					.countries[g.toUpperCase()])
			}
		},
		_at: function(a) {
			if (/^ATU[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^U[0-9]{8}$/.test(a)) return !1;
			a = a.substr(1);
			for (var b = 0, c = [1, 2, 1, 2, 1, 2, 1], d = 0, e = 0; 7 > e; e++) d = parseInt(a.charAt(e), 10) * c[e], d > 9 &&
				(d = Math.floor(d / 10) + d % 10), b += d;
			return b = 10 - (b + 4) % 10, 10 === b && (b = 0), b + "" === a.substr(7, 1)
		},
		_be: function(a) {
			if (/^BE[0]{0,1}[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0]{0,1}[0-9]{9}$/.test(a)) return !1;
			if (9 === a.length && (a = "0" + a), "0" === a.substr(1, 1)) return !1;
			var b = parseInt(a.substr(0, 8), 10) + parseInt(a.substr(8, 2), 10);
			return b % 97 === 0
		},
		_bg: function(a) {
			if (/^BG[0-9]{9,10}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9,10}$/.test(a)) return !1;
			var b = 0,
				c = 0;
			if (9 === a.length) {
				for (c = 0; 8 > c; c++) b += parseInt(a.charAt(c), 10) * (c + 1);
				if (b %= 11, 10 === b)
					for (b = 0, c = 0; 8 > c; c++) b += parseInt(a.charAt(c), 10) * (c + 3);
				return b %= 10, b + "" === a.substr(8)
			}
			if (10 === a.length) {
				var d = function(a) {
						var b = parseInt(a.substr(0, 2), 10) + 1900,
							c = parseInt(a.substr(2, 2), 10),
							d = parseInt(a.substr(4, 2), 10);
						if (c > 40 ? (b += 100, c -= 40) : c > 20 && (b -= 100, c -= 20), !FormValidation.Helper.date(b, c, d)) return !
							1;
						for (var e = 0, f = [2, 4, 8, 5, 10, 9, 7, 3, 6], g = 0; 9 > g; g++) e += parseInt(a.charAt(g), 10) * f[g];
						return e = e % 11 % 10, e + "" === a.substr(9, 1)
					},
					e = function(a) {
						for (var b = 0, c = [21, 19, 17, 13, 11, 9, 7, 3, 1], d = 0; 9 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
						return b %= 10, b + "" === a.substr(9, 1)
					},
					f = function(a) {
						for (var b = 0, c = [4, 3, 2, 7, 6, 5, 4, 3, 2], d = 0; 9 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
						return b = 11 - b % 11, 10 === b ? !1 : (11 === b && (b = 0), b + "" === a.substr(9, 1))
					};
				return d(a) || e(a) || f(a)
			}
			return !1
		},
		_br: function(a) {
			if ("" === a) return !0;
			var b = a.replace(/[^\d]+/g, "");
			if ("" === b || 14 !== b.length) return !1;
			if ("00000000000000" === b || "11111111111111" === b || "22222222222222" === b || "33333333333333" === b ||
				"44444444444444" === b || "55555555555555" === b || "66666666666666" === b || "77777777777777" === b ||
				"88888888888888" === b || "99999999999999" === b) return !1;
			for (var c = b.length - 2, d = b.substring(0, c), e = b.substring(c), f = 0, g = c - 7, h = c; h >= 1; h--) f +=
				parseInt(d.charAt(c - h), 10) * g--, 2 > g && (g = 9);
			var i = 2 > f % 11 ? 0 : 11 - f % 11;
			if (i !== parseInt(e.charAt(0), 10)) return !1;
			for (c += 1, d = b.substring(0, c), f = 0, g = c - 7, h = c; h >= 1; h--) f += parseInt(d.charAt(c - h), 10) * g--,
				2 > g && (g = 9);
			return i = 2 > f % 11 ? 0 : 11 - f % 11, i === parseInt(e.charAt(1), 10)
		},
		_ch: function(a) {
			if (/^CHE[0-9]{9}(MWST)?$/.test(a) && (a = a.substr(2)), !/^E[0-9]{9}(MWST)?$/.test(a)) return !1;
			a = a.substr(1);
			for (var b = 0, c = [5, 4, 3, 2, 7, 6, 5, 4], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b = 11 - b % 11, 10 === b ? !1 : (11 === b && (b = 0), b + "" === a.substr(8, 1))
		},
		_cy: function(a) {
			if (/^CY[0-5|9]{1}[0-9]{7}[A-Z]{1}$/.test(a) && (a = a.substr(2)), !/^[0-5|9]{1}[0-9]{7}[A-Z]{1}$/.test(a)) return !
				1;
			if ("12" === a.substr(0, 2)) return !1;
			for (var b = 0, c = {
					0: 1,
					1: 0,
					2: 5,
					3: 7,
					4: 9,
					5: 13,
					6: 15,
					7: 17,
					8: 19,
					9: 21
				}, d = 0; 8 > d; d++) {
				var e = parseInt(a.charAt(d), 10);
				d % 2 === 0 && (e = c[e + ""]), b += e
			}
			return b = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" [b % 26], b + "" === a.substr(8, 1)
		},
		_cz: function(a) {
			if (/^CZ[0-9]{8,10}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8,10}$/.test(a)) return !1;
			var b = 0,
				c = 0;
			if (8 === a.length) {
				if (a.charAt(0) + "" == "9") return !1;
				for (b = 0, c = 0; 7 > c; c++) b += parseInt(a.charAt(c), 10) * (8 - c);
				return b = 11 - b % 11, 10 === b && (b = 0), 11 === b && (b = 1), b + "" === a.substr(7, 1)
			}
			if (9 === a.length && a.charAt(0) + "" == "6") {
				for (b = 0, c = 0; 7 > c; c++) b += parseInt(a.charAt(c + 1), 10) * (8 - c);
				return b = 11 - b % 11, 10 === b && (b = 0), 11 === b && (b = 1), b = [8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 10][b - 1],
					b + "" === a.substr(8, 1)
			}
			if (9 === a.length || 10 === a.length) {
				var d = 1900 + parseInt(a.substr(0, 2), 10),
					e = parseInt(a.substr(2, 2), 10) % 50 % 20,
					f = parseInt(a.substr(4, 2), 10);
				if (9 === a.length) {
					if (d >= 1980 && (d -= 100), d > 1953) return !1
				} else 1954 > d && (d += 100);
				if (!FormValidation.Helper.date(d, e, f)) return !1;
				if (10 === a.length) {
					var g = parseInt(a.substr(0, 9), 10) % 11;
					return 1985 > d && (g %= 10), g + "" === a.substr(9, 1)
				}
				return !0
			}
			return !1
		},
		_de: function(a) {
			return /^DE[0-9]{9}$/.test(a) && (a = a.substr(2)), /^[0-9]{9}$/.test(a) ? FormValidation.Helper.mod11And10(a) : !
				1
		},
		_dk: function(a) {
			if (/^DK[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8}$/.test(a)) return !1;
			for (var b = 0, c = [2, 7, 6, 5, 4, 3, 2, 1], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b % 11 === 0
		},
		_ee: function(a) {
			if (/^EE[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
			for (var b = 0, c = [3, 7, 1, 3, 7, 1, 3, 7, 1], d = 0; 9 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b % 10 === 0
		},
		_es: function(a) {
			if (/^ES[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(a) && (a = a.substr(2)), !/^[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(a)) return !1;
			var b = function(a) {
					var b = parseInt(a.substr(0, 8), 10);
					return b = "TRWAGMYFPDXBNJZSQVHLCKE" [b % 23], b + "" === a.substr(8, 1)
				},
				c = function(a) {
					var b = ["XYZ".indexOf(a.charAt(0)), a.substr(1)].join("");
					return b = parseInt(b, 10), b = "TRWAGMYFPDXBNJZSQVHLCKE" [b % 23], b + "" === a.substr(8, 1)
				},
				d = function(a) {
					var b, c = a.charAt(0);
					if (-1 !== "KLM".indexOf(c)) return b = parseInt(a.substr(1, 8), 10), b = "TRWAGMYFPDXBNJZSQVHLCKE" [b % 23], b +
						"" === a.substr(8, 1);
					if (-1 !== "ABCDEFGHJNPQRSUVW".indexOf(c)) {
						for (var d = 0, e = [2, 1, 2, 1, 2, 1, 2], f = 0, g = 0; 7 > g; g++) f = parseInt(a.charAt(g + 1), 10) * e[g],
							f > 9 && (f = Math.floor(f / 10) + f % 10), d += f;
						return d = 10 - d % 10, 10 === d && (d = 0), d + "" === a.substr(8, 1) || "JABCDEFGHI" [d] === a.substr(8, 1)
					}
					return !1
				},
				e = a.charAt(0);
			return /^[0-9]$/.test(e) ? b(a) : /^[XYZ]$/.test(e) ? c(a) : d(a)
		},
		_fi: function(a) {
			if (/^FI[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8}$/.test(a)) return !1;
			for (var b = 0, c = [7, 9, 10, 5, 8, 4, 2, 1], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b % 11 === 0
		},
		_fr: function(a) {
			if (/^FR[0-9A-Z]{2}[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9A-Z]{2}[0-9]{9}$/.test(a)) return !1;
			if (!FormValidation.Helper.luhn(a.substr(2))) return !1;
			if (/^[0-9]{2}$/.test(a.substr(0, 2))) return a.substr(0, 2) === parseInt(a.substr(2) + "12", 10) % 97 + "";
			var b, c = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
			return b = /^[0-9]{1}$/.test(a.charAt(0)) ? 24 * c.indexOf(a.charAt(0)) + c.indexOf(a.charAt(1)) - 10 : 34 * c.indexOf(
					a.charAt(0)) + c.indexOf(a.charAt(1)) - 100, (parseInt(a.substr(2), 10) + 1 + Math.floor(b / 11)) % 11 === b %
				11
		},
		_gb: function(a) {
			if ((/^GB[0-9]{9}$/.test(a) || /^GB[0-9]{12}$/.test(a) || /^GBGD[0-9]{3}$/.test(a) || /^GBHA[0-9]{3}$/.test(a) ||
					/^GB(GD|HA)8888[0-9]{5}$/.test(a)) && (a = a.substr(2)), !(/^[0-9]{9}$/.test(a) || /^[0-9]{12}$/.test(a) ||
					/^GD[0-9]{3}$/.test(a) || /^HA[0-9]{3}$/.test(a) || /^(GD|HA)8888[0-9]{5}$/.test(a))) return !1;
			var b = a.length;
			if (5 === b) {
				var c = a.substr(0, 2),
					d = parseInt(a.substr(2), 10);
				return "GD" === c && 500 > d || "HA" === c && d >= 500
			}
			if (11 === b && ("GD8888" === a.substr(0, 6) || "HA8888" === a.substr(0, 6))) return "GD" === a.substr(0, 2) &&
				parseInt(a.substr(6, 3), 10) >= 500 || "HA" === a.substr(0, 2) && parseInt(a.substr(6, 3), 10) < 500 ? !1 :
				parseInt(a.substr(6, 3), 10) % 97 === parseInt(a.substr(9, 2), 10);
			if (9 === b || 12 === b) {
				for (var e = 0, f = [8, 7, 6, 5, 4, 3, 2, 10, 1], g = 0; 9 > g; g++) e += parseInt(a.charAt(g), 10) * f[g];
				return e %= 97, parseInt(a.substr(0, 3), 10) >= 100 ? 0 === e || 42 === e || 55 === e : 0 === e
			}
			return !0
		},
		_gr: function(a) {
			if (/^(GR|EL)[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
			8 === a.length && (a = "0" + a);
			for (var b = 0, c = [256, 128, 64, 32, 16, 8, 4, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b = b % 11 % 10, b + "" === a.substr(8, 1)
		},
		_el: function(a) {
			return this._gr(a)
		},
		_hu: function(a) {
			if (/^HU[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8}$/.test(a)) return !1;
			for (var b = 0, c = [9, 7, 3, 1, 9, 7, 3, 1], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b % 10 === 0
		},
		_hr: function(a) {
			return /^HR[0-9]{11}$/.test(a) && (a = a.substr(2)), /^[0-9]{11}$/.test(a) ? FormValidation.Helper.mod11And10(a) :
				!1
		},
		_ie: function(a) {
			if (/^IE[0-9]{1}[0-9A-Z\*\+]{1}[0-9]{5}[A-Z]{1,2}$/.test(a) && (a = a.substr(2)), !
				/^[0-9]{1}[0-9A-Z\*\+]{1}[0-9]{5}[A-Z]{1,2}$/.test(a)) return !1;
			var b = function(a) {
				for (; a.length < 7;) a = "0" + a;
				for (var b = "WABCDEFGHIJKLMNOPQRSTUV", c = 0, d = 0; 7 > d; d++) c += parseInt(a.charAt(d), 10) * (8 - d);
				return c += 9 * b.indexOf(a.substr(7)), b[c % 23]
			};
			return /^[0-9]+$/.test(a.substr(0, 7)) ? a.charAt(7) === b(a.substr(0, 7) + a.substr(8) + "") : -1 !==
				"ABCDEFGHIJKLMNOPQRSTUVWXYZ+*".indexOf(a.charAt(1)) ? a.charAt(7) === b(a.substr(2, 5) + a.substr(0, 1) + "") : !
				0
		},
		_is: function(a) {
			return /^IS[0-9]{5,6}$/.test(a) && (a = a.substr(2)), /^[0-9]{5,6}$/.test(a)
		},
		_it: function(a) {
			if (/^IT[0-9]{11}$/.test(a) && (a = a.substr(2)), !/^[0-9]{11}$/.test(a)) return !1;
			if (0 === parseInt(a.substr(0, 7), 10)) return !1;
			var b = parseInt(a.substr(7, 3), 10);
			return 1 > b || b > 201 && 999 !== b && 888 !== b ? !1 : FormValidation.Helper.luhn(a)
		},
		_lt: function(a) {
			if (/^LT([0-9]{7}1[0-9]{1}|[0-9]{10}1[0-9]{1})$/.test(a) && (a = a.substr(2)), !
				/^([0-9]{7}1[0-9]{1}|[0-9]{10}1[0-9]{1})$/.test(a)) return !1;
			var b, c = a.length,
				d = 0;
			for (b = 0; c - 1 > b; b++) d += parseInt(a.charAt(b), 10) * (1 + b % 9);
			var e = d % 11;
			if (10 === e)
				for (d = 0, b = 0; c - 1 > b; b++) d += parseInt(a.charAt(b), 10) * (1 + (b + 2) % 9);
			return e = e % 11 % 10, e + "" === a.charAt(c - 1)
		},
		_lu: function(a) {
			return /^LU[0-9]{8}$/.test(a) && (a = a.substr(2)), /^[0-9]{8}$/.test(a) ? parseInt(a.substr(0, 6), 10) % 89 + "" ===
				a.substr(6, 2) : !1
		},
		_lv: function(a) {
			if (/^LV[0-9]{11}$/.test(a) && (a = a.substr(2)), !/^[0-9]{11}$/.test(a)) return !1;
			var b, c = parseInt(a.charAt(0), 10),
				d = 0,
				e = [],
				f = a.length;
			if (c > 3) {
				for (d = 0, e = [9, 1, 4, 8, 3, 10, 2, 5, 7, 6, 1], b = 0; f > b; b++) d += parseInt(a.charAt(b), 10) * e[b];
				return d %= 11, 3 === d
			}
			var g = parseInt(a.substr(0, 2), 10),
				h = parseInt(a.substr(2, 2), 10),
				i = parseInt(a.substr(4, 2), 10);
			if (i = i + 1800 + 100 * parseInt(a.charAt(6), 10), !FormValidation.Helper.date(i, h, g)) return !1;
			for (d = 0, e = [10, 5, 8, 4, 2, 1, 6, 3, 7, 9], b = 0; f - 1 > b; b++) d += parseInt(a.charAt(b), 10) * e[b];
			return d = (d + 1) % 11 % 10, d + "" === a.charAt(f - 1)
		},
		_mt: function(a) {
			if (/^MT[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8}$/.test(a)) return !1;
			for (var b = 0, c = [3, 4, 6, 7, 8, 9, 10, 1], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b % 37 === 0
		},
		_nl: function(a) {
			if (/^NL[0-9]{9}B[0-9]{2}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}B[0-9]{2}$/.test(a)) return !1;
			for (var b = 0, c = [9, 8, 7, 6, 5, 4, 3, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b %= 11, b > 9 && (b = 0), b + "" === a.substr(8, 1)
		},
		_no: function(a) {
			if (/^NO[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
			for (var b = 0, c = [3, 2, 7, 6, 5, 4, 3, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b = 11 - b % 11, 11 === b && (b = 0), b + "" === a.substr(8, 1)
		},
		_pl: function(a) {
			if (/^PL[0-9]{10}$/.test(a) && (a = a.substr(2)), !/^[0-9]{10}$/.test(a)) return !1;
			for (var b = 0, c = [6, 5, 7, 2, 3, 4, 5, 6, 7, -1], d = 0; 10 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b % 11 === 0
		},
		_pt: function(a) {
			if (/^PT[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
			for (var b = 0, c = [9, 8, 7, 6, 5, 4, 3, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
			return b = 11 - b % 11, b > 9 && (b = 0), b + "" === a.substr(8, 1)
		},
		_ro: function(a) {
			if (/^RO[1-9][0-9]{1,9}$/.test(a) && (a = a.substr(2)), !/^[1-9][0-9]{1,9}$/.test(a)) return !1;
			for (var b = a.length, c = [7, 5, 3, 2, 1, 7, 5, 3, 2].slice(10 - b), d = 0, e = 0; b - 1 > e; e++) d += parseInt(
				a.charAt(e), 10) * c[e];
			return d = 10 * d % 11 % 10, d + "" === a.substr(b - 1, 1)
		},
		_ru: function(a) {
			if (/^RU([0-9]{10}|[0-9]{12})$/.test(a) && (a = a.substr(2)), !/^([0-9]{10}|[0-9]{12})$/.test(a)) return !1;
			var b = 0;
			if (10 === a.length) {
				var c = 0,
					d = [2, 4, 10, 3, 5, 9, 4, 6, 8, 0];
				for (b = 0; 10 > b; b++) c += parseInt(a.charAt(b), 10) * d[b];
				return c %= 11, c > 9 && (c %= 10), c + "" === a.substr(9, 1)
			}
			if (12 === a.length) {
				var e = 0,
					f = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0],
					g = 0,
					h = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0];
				for (b = 0; 11 > b; b++) e += parseInt(a.charAt(b), 10) * f[b], g += parseInt(a.charAt(b), 10) * h[b];
				return e %= 11, e > 9 && (e %= 10), g %= 11, g > 9 && (g %= 10), e + "" === a.substr(10, 1) && g + "" === a.substr(
					11, 1)
			}
			return !1
		},
		_rs: function(a) {
			if (/^RS[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
			for (var b = 10, c = 0, d = 0; 8 > d; d++) c = (parseInt(a.charAt(d), 10) + b) % 10, 0 === c && (c = 10), b = 2 *
				c % 11;
			return (b + parseInt(a.substr(8, 1), 10)) % 10 === 1
		},
		_se: function(a) {
			return /^SE[0-9]{10}01$/.test(a) && (a = a.substr(2)), /^[0-9]{10}01$/.test(a) ? (a = a.substr(0, 10),
				FormValidation.Helper.luhn(a)) : !1
		},
		_si: function(a) {
			var b = a.match(/^(SI)?([1-9][0-9]{7})$/);
			if (!b) return !1;
			b[1] && (a = a.substr(2));
			for (var c = 0, d = [8, 7, 6, 5, 4, 3, 2], e = 0; 7 > e; e++) c += parseInt(a.charAt(e), 10) * d[e];
			return c = 11 - c % 11, 10 === c && (c = 0), c + "" === a.substr(7, 1)
		},
		_sk: function(a) {
			return /^SK[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(a) && (a = a.substr(2)), /^[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(
				a) ? parseInt(a, 10) % 11 === 0 : !1
		},
		_ve: function(a) {
			if (/^VE[VEJPG][0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[VEJPG][0-9]{9}$/.test(a)) return !1;
			for (var b = {
					V: 4,
					E: 8,
					J: 12,
					P: 16,
					G: 20
				}, c = b[a.charAt(0)], d = [3, 2, 7, 6, 5, 4, 3, 2], e = 0; 8 > e; e++) c += parseInt(a.charAt(e + 1), 10) * d[e];
			return c = 11 - c % 11, (11 === c || 10 === c) && (c = 0), c + "" === a.substr(9, 1)
		},
		_za: function(a) {
			return /^ZA4[0-9]{9}$/.test(a) && (a = a.substr(2)), /^4[0-9]{9}$/.test(a)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			vin: {
				"default": "Please enter a valid VIN number"
			}
		}
	}), FormValidation.Validator.vin = {
		validate: function(a, b) {
			var c = a.getFieldValue(b, "vin");
			if ("" === c) return !0;
			if (!/^[a-hj-npr-z0-9]{8}[0-9xX][a-hj-npr-z0-9]{8}$/i.test(c)) return !1;
			c = c.toUpperCase();
			for (var d = {
					A: 1,
					B: 2,
					C: 3,
					D: 4,
					E: 5,
					F: 6,
					G: 7,
					H: 8,
					J: 1,
					K: 2,
					L: 3,
					M: 4,
					N: 5,
					P: 7,
					R: 9,
					S: 2,
					T: 3,
					U: 4,
					V: 5,
					W: 6,
					X: 7,
					Y: 8,
					Z: 9,
					1: 1,
					2: 2,
					3: 3,
					4: 4,
					5: 5,
					6: 6,
					7: 7,
					8: 8,
					9: 9,
					0: 0
				}, e = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2], f = 0, g = c.length, h = 0; g > h; h++) f += d[c.charAt(
				h) + ""] * e[h];
			var i = f % 11;
			return 10 === i && (i = "X"), i + "" === c.charAt(8)
		}
	}
}(jQuery),
function(a) {
	FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
		en_US: {
			zipCode: {
				"default": "Please enter a valid postal code",
				country: "Please enter a valid postal code in %s",
				countries: {
					AT: "Austria",
					BG: "Bulgaria",
					BR: "Brazil",
					CA: "Canada",
					CH: "Switzerland",
					CZ: "Czech Republic",
					DE: "Germany",
					DK: "Denmark",
					ES: "Spain",
					FR: "France",
					GB: "United Kingdom",
					IE: "Ireland",
					IN: "India",
					IT: "Italy",
					MA: "Morocco",
					NL: "Netherlands",
					PL: "Poland",
					PT: "Portugal",
					RO: "Romania",
					RU: "Russia",
					SE: "Sweden",
					SG: "Singapore",
					SK: "Slovakia",
					US: "USA"
				}
			}
		}
	}), FormValidation.Validator.zipCode = {
		html5Attributes: {
			message: "message",
			country: "country"
		},
		COUNTRY_CODES: ["AT", "BG", "BR", "CA", "CH", "CZ", "DE", "DK", "ES", "FR", "GB", "IE", "IN", "IT", "MA", "NL", "PL",
			"PT", "RO", "RU", "SE", "SG", "SK", "US"
		],
		validate: function(b, c, d) {
			var e = b.getFieldValue(c, "zipCode");
			if ("" === e || !d.country) return !0;
			var f = b.getLocale(),
				g = d.country;
			if (("string" != typeof g || -1 === a.inArray(g, this.COUNTRY_CODES)) && (g = b.getDynamicOption(c, g)), !g || -1 ===
				a.inArray(g.toUpperCase(), this.COUNTRY_CODES)) return !0;
			var h = !1;
			switch (g = g.toUpperCase()) {
				case "AT":
					h = /^([1-9]{1})(\d{3})$/.test(e);
					break;
				case "BG":
					h = /^([1-9]{1}[0-9]{3})$/.test(a.trim(e));
					break;
				case "BR":
					h = /^(\d{2})([\.]?)(\d{3})([\-]?)(\d{3})$/.test(e);
					break;
				case "CA":
					h =
						/^(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|X|Y){1}[0-9]{1}(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|W|X|Y|Z){1}\s?[0-9]{1}(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|W|X|Y|Z){1}[0-9]{1}$/i
						.test(e);
					break;
				case "CH":
					h = /^([1-9]{1})(\d{3})$/.test(e);
					break;
				case "CZ":
					h = /^(\d{3})([ ]?)(\d{2})$/.test(e);
					break;
				case "DE":
					h = /^(?!01000|99999)(0[1-9]\d{3}|[1-9]\d{4})$/.test(e);
					break;
				case "DK":
					h = /^(DK(-|\s)?)?\d{4}$/i.test(e);
					break;
				case "ES":
					h = /^(?:0[1-9]|[1-4][0-9]|5[0-2])\d{3}$/.test(e);
					break;
				case "FR":
					h = /^[0-9]{5}$/i.test(e);
					break;
				case "GB":
					h = this._gb(e);
					break;
				case "IN":
					h = /^\d{3}\s?\d{3}$/.test(e);
					break;
				case "IE":
					h = /^(D6W|[ACDEFHKNPRTVWXY]\d{2})\s[0-9ACDEFHKNPRTVWXY]{4}$/.test(e);
					break;
				case "IT":
					h = /^(I-|IT-)?\d{5}$/i.test(e);
					break;
				case "MA":
					h = /^[1-9][0-9]{4}$/i.test(e);
					break;
				case "NL":
					h = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i.test(e);
					break;
				case "PL":
					h = /^[0-9]{2}\-[0-9]{3}$/.test(e);
					break;
				case "PT":
					h = /^[1-9]\d{3}-\d{3}$/.test(e);
					break;
				case "RO":
					h = /^(0[1-8]{1}|[1-9]{1}[0-5]{1})?[0-9]{4}$/i.test(e);
					break;
				case "RU":
					h = /^[0-9]{6}$/i.test(e);
					break;
				case "SE":
					h = /^(S-)?\d{3}\s?\d{2}$/i.test(e);
					break;
				case "SG":
					h = /^([0][1-9]|[1-6][0-9]|[7]([0-3]|[5-9])|[8][0-2])(\d{4})$/i.test(e);
					break;
				case "SK":
					h = /^(\d{3})([ ]?)(\d{2})$/.test(e);
					break;
				case "US":
				default:
					h = /^\d{4,5}([\-]?\d{4})?$/.test(e)
			}
			return {
				valid: h,
				message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].zipCode.country, FormValidation.I18n[f]
					.zipCode.countries[g])
			}
		},
		_gb: function(a) {
			for (var b = "[ABCDEFGHIJKLMNOPRSTUWYZ]", c = "[ABCDEFGHKLMNOPQRSTUVWXY]", d = "[ABCDEFGHJKPMNRSTUVWXY]", e =
					"[ABEHMNPRVWXY]", f = "[ABDEFGHJLNPQRSTUWXYZ]", g = [new RegExp("^(" + b + "{1}" + c +
							"?[0-9]{1,2})(\\s*)([0-9]{1}" + f + "{2})$", "i"), new RegExp("^(" + b + "{1}[0-9]{1}" + d +
							"{1})(\\s*)([0-9]{1}" + f + "{2})$", "i"), new RegExp("^(" + b + "{1}" + c + "{1}?[0-9]{1}" + e +
							"{1})(\\s*)([0-9]{1}" + f + "{2})$", "i"), new RegExp(
							"^(BF1)(\\s*)([0-6]{1}[ABDEFGHJLNPQRST]{1}[ABDEFGHJLNPQRSTUWZYZ]{1})$", "i"), /^(GIR)(\s*)(0AA)$/i,
						/^(BFPO)(\s*)([0-9]{1,4})$/i, /^(BFPO)(\s*)(c\/o\s*[0-9]{1,3})$/i, /^([A-Z]{4})(\s*)(1ZZ)$/i, /^(AI-2640)$/i
					], h = 0; h < g.length; h++)
				if (g[h].test(a)) return !0;
			return !1
		}
	}
}(jQuery);
/*bootstrap.min.js*/
/*!
 * FormValidation (http://formvalidation.io)
 * The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
 *
 * @version     v0.6.2-dev, built on 2015-03-13 8:15:46 AM
 * @author      https://twitter.com/nghuuphuoc
 * @copyright   (c) 2013 - 2015 Nguyen Huu Phuoc
 * @license     http://formvalidation.io/license/
 */
! function(a) {
	FormValidation.Framework.Bootstrap = function(b, c, d) {
		c = a.extend(!0, {
			button: {
				selector: '[type="submit"]',
				disabled: "disabled"
			},
			err: {
				clazz: "help-block",
				parent: "^(.*)col-(xs|sm|md|lg)-(offset-){0,1}[0-9]+(.*)$"
			},
			icon: {
				valid: null,
				invalid: null,
				validating: null,
				feedback: "form-control-feedback"
			},
			row: {
				selector: ".form-group",
				valid: "has-success",
				invalid: "has-error",
				feedback: "has-feedback"
			}
		}, c), FormValidation.Base.apply(this, [b, c, d])
	}, FormValidation.Framework.Bootstrap.prototype = a.extend({}, FormValidation.Base.prototype, {
		_fixIcon: function(a, b) {
			var c = this._namespace,
				d = a.attr("type"),
				e = a.attr("data-" + c + "-field"),
				f = this.options.fields[e].row || this.options.row.selector,
				g = a.closest(f);
			if ("checkbox" === d || "radio" === d) {
				var h = a.parent();
				h.hasClass(d) ? b.insertAfter(h) : h.parent().hasClass(d) && b.insertAfter(h.parent())
			}
			0 === g.find("label").length && b.addClass("fv-icon-no-label"), 0 !== g.find(".input-group").length && b.addClass(
				"fv-bootstrap-icon-input-group").insertAfter(g.find(".input-group").eq(0))
		},
		_createTooltip: function(a, b, c) {
			var d = this._namespace,
				e = a.data(d + ".icon");
			if (e) switch (c) {
				case "popover":
					e.css({
						cursor: "pointer",
						"pointer-events": "auto"
					}).popover("destroy").popover({
						container: "body",
						content: b,
						html: !0,
						placement: "auto top",
						trigger: "hover click"
					});
					break;
				case "tooltip":
				default:
					e.css({
						cursor: "pointer",
						"pointer-events": "auto"
					}).tooltip("destroy").tooltip({
						container: "body",
						html: !0,
						placement: "auto top",
						title: b
					})
			}
		},
		_destroyTooltip: function(a, b) {
			var c = this._namespace,
				d = a.data(c + ".icon");
			if (d) switch (b) {
				case "popover":
					d.css({
						cursor: "",
						"pointer-events": "none"
					}).popover("destroy");
					break;
				case "tooltip":
				default:
					d.css({
						cursor: "",
						"pointer-events": "none"
					}).tooltip("destroy")
			}
		},
		_hideTooltip: function(a, b) {
			var c = this._namespace,
				d = a.data(c + ".icon");
			if (d) switch (b) {
				case "popover":
					d.popover("hide");
					break;
				case "tooltip":
				default:
					d.tooltip("hide")
			}
		},
		_showTooltip: function(a, b) {
			var c = this._namespace,
				d = a.data(c + ".icon");
			if (d) switch (b) {
				case "popover":
					d.popover("show");
					break;
				case "tooltip":
				default:
					d.tooltip("show")
			}
		}
	}), a.fn.bootstrapValidator = function(b) {
		var c = arguments;
		return this.each(function() {
			var d = a(this),
				e = d.data("formValidation") || d.data("bootstrapValidator"),
				f = "object" == typeof b && b;
			e || (e = new FormValidation.Framework.Bootstrap(this, a.extend({}, {
					events: {
						formInit: "init.form.bv",
						formError: "error.form.bv",
						formSuccess: "success.form.bv",
						fieldAdded: "added.field.bv",
						fieldRemoved: "removed.field.bv",
						fieldInit: "init.field.bv",
						fieldError: "error.field.bv",
						fieldSuccess: "success.field.bv",
						fieldStatus: "status.field.bv",
						localeChanged: "changed.locale.bv",
						validatorError: "error.validator.bv",
						validatorSuccess: "success.validator.bv"
					}
				}, f), "bv"), d.addClass("fv-form-bootstrap").data("formValidation", e).data("bootstrapValidator", e)), "string" ==
				typeof b && e[b].apply(e, Array.prototype.slice.call(c, 1))
		})
	}, a.fn.bootstrapValidator.Constructor = FormValidation.Framework.Bootstrap
}(jQuery);
/*jquery.placeholder.min.js*/
/* HTML5 Placeholder jQuery Plugin - v2.3.1
 * Copyright (c)2015 Mathias Bynens
 * 2015-12-16
 */
! function(a) {
	"function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof module && module.exports ?
		require("jquery") : jQuery)
}(function(a) {
	function b(b) {
		var c = {},
			d = /^jQuery\d+$/;
		return a.each(b.attributes, function(a, b) {
			b.specified && !d.test(b.name) && (c[b.name] = b.value)
		}), c
	}

	function c(b, c) {
		var d = this,
			f = a(this);
		if (d.value === f.attr(h ? "placeholder-x" : "placeholder") && f.hasClass(n.customClass))
			if (d.value = "", f.removeClass(n.customClass), f.data("placeholder-password")) {
				if (f = f.hide().nextAll('input[type="password"]:first').show().attr("id", f.removeAttr("id").data(
						"placeholder-id")), b === !0) return f[0].value = c, c;
				f.focus()
			} else d == e() && d.select()
	}

	function d(d) {
		var e, f = this,
			g = a(this),
			i = f.id;
		if (!d || "blur" !== d.type || !g.hasClass(n.customClass))
			if ("" === f.value) {
				if ("password" === f.type) {
					if (!g.data("placeholder-textinput")) {
						try {
							e = g.clone().prop({
								type: "text"
							})
						} catch (j) {
							e = a("<input>").attr(a.extend(b(this), {
								type: "text"
							}))
						}
						e.removeAttr("name").data({
							"placeholder-enabled": !0,
							"placeholder-password": g,
							"placeholder-id": i
						}).bind("focus.placeholder", c), g.data({
							"placeholder-textinput": e,
							"placeholder-id": i
						}).before(e)
					}
					f.value = "", g = g.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id", g.data(
						"placeholder-id")).show()
				} else {
					var k = g.data("placeholder-password");
					k && (k[0].value = "", g.attr("id", g.data("placeholder-id")).show().nextAll('input[type="password"]:last').hide()
						.removeAttr("id"))
				}
				g.addClass(n.customClass), g[0].value = g.attr(h ? "placeholder-x" : "placeholder")
			} else g.removeClass(n.customClass)
	}

	function e() {
		try {
			return document.activeElement
		} catch (a) {}
	}
	var f, g, h = !1,
		i = "[object OperaMini]" === Object.prototype.toString.call(window.operamini),
		j = "placeholder" in document.createElement("input") && !i && !h,
		k = "placeholder" in document.createElement("textarea") && !i && !h,
		l = a.valHooks,
		m = a.propHooks,
		n = {};
	j && k ? (g = a.fn.placeholder = function() {
		return this
	}, g.input = !0, g.textarea = !0) : (g = a.fn.placeholder = function(b) {
		var e = {
			customClass: "placeholder"
		};
		return n = a.extend({}, e, b), this.filter((j ? "textarea" : ":input") + "[" + (h ? "placeholder-x" :
			"placeholder") + "]").not("." + n.customClass).not(":radio, :checkbox, [type=hidden]").bind({
			"focus.placeholder": c,
			"blur.placeholder": d
		}).data("placeholder-enabled", !0).trigger("blur.placeholder")
	}, g.input = j, g.textarea = k, f = {
		get: function(b) {
			var c = a(b),
				d = c.data("placeholder-password");
			return d ? d[0].value : c.data("placeholder-enabled") && c.hasClass(n.customClass) ? "" : b.value
		},
		set: function(b, f) {
			var g, h, i = a(b);
			return "" !== f && (g = i.data("placeholder-textinput"), h = i.data("placeholder-password"), g ? (c.call(g[0], !
				0, f) || (b.value = f), g[0].value = f) : h && (c.call(b, !0, f) || (h[0].value = f), b.value = f)), i.data(
				"placeholder-enabled") ? ("" === f ? (b.value = f, b != e() && d.call(b)) : (i.hasClass(n.customClass) && c.call(
				b), b.value = f), i) : (b.value = f, i)
		}
	}, j || (l.input = f, m.value = f), k || (l.textarea = f, m.value = f), a(function() {
		a(document).delegate("form", "submit.placeholder", function() {
			var b = a("." + n.customClass, this).each(function() {
				c.call(this, !0, "")
			});
			setTimeout(function() {
				b.each(d)
			}, 10)
		})
	}), a(window).bind("beforeunload.placeholder", function() {
		var b = !0;
		try {
			"javascript:void(0)" === document.activeElement.toString() && (b = !1)
		} catch (c) {}
		b && a("." + n.customClass).each(function() {
			this.value = ""
		})
	}))
});
/*jquery-placeholder.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
$.components.register("placeholder", {
	mode: "init",
	init: function(context) {
		$.fn.placeholder && $("input, textarea", context).placeholder()
	}
});
/*jquery.asScrollable.all.min.js*/
/*! jQuery asScrollable - v0.3.1 - 2015-06-15
 * https://github.com/amazingSurge/jquery-asScrollable
 * Copyright (c) 2015 amazingSurge; Licensed GPL */
! function(a, b, c, d) {
	"use strict";

	function e() {
		return "undefined" != typeof a.performance && a.performance.now ? a.performance.now() : Date.now()
	}

	function f(a) {
		return "string" == typeof a && -1 != a.indexOf("%")
	}

	function g(a) {
		return parseFloat(a.slice(0, -1) / 100, 10)
	}

	function h(a) {
		return a && "matrix" == a.substr(0, 6) ? a.replace(/^.*\((.*)\)$/g, "$1").replace(/px/g, "").split(/, +/) : !1
	}
	var i = "asScrollbar";
	Date.now || (Date.now = function() {
		return (new Date).getTime()
	});
	for (var j = ["webkit", "moz"], k = 0; k < j.length && !a.requestAnimationFrame; ++k) {
		var l = j[k];
		a.requestAnimationFrame = a[l + "RequestAnimationFrame"], a.cancelAnimationFrame = a[l + "CancelAnimationFrame"] || a[
			l + "CancelRequestAnimationFrame"]
	}
	if (/iP(ad|hone|od).*OS (6|7|8)/.test(a.navigator.userAgent) || !a.requestAnimationFrame || !a.cancelAnimationFrame) {
		var m = 0;
		a.requestAnimationFrame = function(a) {
			var b = e(),
				c = Math.max(m + 16, b);
			return setTimeout(function() {
				a(m = c)
			}, c - b)
		}, a.cancelAnimationFrame = clearTimeout
	}
	var n = c[i] = function(a, b) {
		this.$bar = c(b), a = this.options = c.extend({}, n.defaults, a || {}, this.$bar.data("options") || {}), b.direction =
			this.options.direction, this.classes = {
				directionClass: a.namespace + "-" + a.direction,
				barClass: a.barClass ? a.barClass : a.namespace,
				handleClass: a.handleClass ? a.handleClass : a.namespace + "-handle"
			}, "vertical" === this.options.direction ? this.attributes = {
				axis: "Y",
				position: "top",
				length: "height",
				clientLength: "clientHeight"
			} : "horizontal" === this.options.direction && (this.attributes = {
				axis: "X",
				position: "left",
				length: "width",
				clientLength: "clientWidth"
			}), this._states = {}, this._drag = {
				time: null,
				pointer: null
			}, this._frameId = null, this.handlePosition = 0, this.easing = n.easing[this.options.easing] || n.easing.ease,
			this.init()
	};
	n.defaults = {
		namespace: "asScrollbar",
		skin: null,
		handleSelector: null,
		handleTemplate: '<div class="{{handle}}"></div>',
		barClass: null,
		handleClass: null,
		disabledClass: "is-disabled",
		draggingClass: "is-dragging",
		hoveringClass: "is-hovering",
		direction: "vertical",
		barLength: null,
		handleLength: null,
		minHandleLength: 30,
		maxHandleLength: null,
		mouseDrag: !0,
		touchDrag: !0,
		pointerDrag: !0,
		clickMove: !0,
		clickMoveStep: .3,
		mousewheel: !0,
		mousewheelSpeed: 50,
		keyboard: !0,
		useCssTransforms3d: !0,
		useCssTransforms: !0,
		useCssTransitions: !0,
		duration: "500",
		easing: "ease"
	};
	var o = {};
	n.support = o,
		function(e) {
			function f(a, b) {
				var e = !1,
					f = a.charAt(0).toUpperCase() + a.slice(1);
				return h[a] !== d && (e = a), e || c.each(i, function(a, b) {
					return h[b + f] !== d ? (e = "-" + b.toLowerCase() + "-" + f, !1) : void 0
				}), b ? e : e ? !0 : !1
			}

			function g(a) {
				return f(a, !0)
			}
			var h = c("<support>").get(0).style,
				i = ["webkit", "Moz", "O", "ms"],
				j = {
					transition: {
						end: {
							WebkitTransition: "webkitTransitionEnd",
							MozTransition: "transitionend",
							OTransition: "oTransitionEnd",
							transition: "transitionend"
						}
					},
					animation: {
						end: {
							WebkitAnimation: "webkitAnimationEnd",
							MozAnimation: "animationend",
							OAnimation: "oAnimationEnd",
							animation: "animationend"
						}
					}
				},
				k = {
					csstransforms: function() {
						return !!f("transform")
					},
					csstransforms3d: function() {
						return !!f("perspective")
					},
					csstransitions: function() {
						return !!f("transition")
					},
					cssanimations: function() {
						return !!f("animation")
					}
				};
			k.csstransitions() && (e.transition = new String(g("transition")), e.transition.end = j.transition.end[e.transition]),
				k.cssanimations() && (e.animation = new String(g("animation")), e.animation.end = j.animation.end[e.animation]), k.csstransforms() &&
				(e.transform = new String(g("transform")), e.transform3d = k.csstransforms3d()), e.touch = "ontouchstart" in a || a
				.DocumentTouch && b instanceof a.DocumentTouch ? !0 : !1, e.pointer = a.PointerEvent || a.MSPointerEvent ? !0 : !1,
				e.prefixPointerEvent = function(b) {
					return a.MSPointerEvent ? "MSPointer" + b.charAt(9).toUpperCase() + b.substr(10) : b
				}
		}(o);
	var p = function(a, b, c, d) {
		function e(a, b) {
			return 1 - 3 * b + 3 * a
		}

		function f(a, b) {
			return 3 * b - 6 * a
		}

		function g(a) {
			return 3 * a
		}

		function h(a, b, c) {
			return ((e(b, c) * a + f(b, c)) * a + g(b)) * a
		}

		function i(a, b, c) {
			return 3 * e(b, c) * a * a + 2 * f(b, c) * a + g(b)
		}

		function j(b) {
			for (var d = b, e = 0; 4 > e; ++e) {
				var f = i(d, a, c);
				if (0 === f) return d;
				var g = h(d, a, c) - b;
				d -= g / f
			}
			return d
		}
		return a === b && c === d ? {
			css: "linear",
			fn: function(a) {
				return a
			}
		} : {
			css: "cubic-bezier(" + a + "," + b + "," + c + "," + d + ")",
			fn: function(a) {
				return h(j(a), b, d)
			}
		}
	};
	c.extend(n.easing = {}, {
		ease: p(.25, .1, .25, 1),
		linear: p(0, 0, 1, 1),
		"ease-in": p(.42, 0, 1, 1),
		"ease-out": p(0, 0, .58, 1),
		"ease-in-out": p(.42, 0, .58, 1)
	}), n.prototype = {
		constructor: n,
		init: function() {
			var a = this.options;
			this.$handle = this.$bar.find(this.options.handleSelector), 0 === this.$handle.length ? this.$handle = c(a.handleTemplate
					.replace(/\{\{handle\}\}/g, this.classes.handleClass)).appendTo(this.$bar) : this.$handle.addClass(this.classes.handleClass),
				this.$bar.addClass(this.classes.barClass).addClass(this.classes.directionClass).attr("draggable", !1), a.skin &&
				this.$bar.addClass(a.skin), null !== a.barLength && this.setBarLength(a.barLength), null !== a.handleLength &&
				this.setHandleLength(a.handleLength), this.updateLength(), this.bindEvents()
		},
		trigger: function(a) {
			var b = Array.prototype.slice.call(arguments, 1),
				c = [this].concat(b);
			this.$bar.trigger(i + "::" + a, c), a = a.replace(/\b\w+\b/g, function(a) {
				return a.substring(0, 1).toUpperCase() + a.substring(1)
			});
			var d = "on" + a;
			"function" == typeof this.options[d] && this.options[d].apply(this, b)
		},
		is: function(a) {
			return this._states[a] && this._states[a] > 0
		},
		enter: function(a) {
			this._states[a] === d && (this._states[a] = 0), this._states[a]++
		},
		leave: function(a) {
			this._states[a]--
		},
		eventName: function(a) {
			if ("string" != typeof a || "" === a) return "." + this.options.namespace;
			a = a.split(" ");
			for (var b = a.length, c = 0; b > c; c++) a[c] = a[c] + "." + this.options.namespace;
			return a.join(" ")
		},
		bindEvents: function() {
			var a = this;
			this.options.mouseDrag && (this.$handle.on(this.eventName("mousedown"), c.proxy(this.onDragStart, this)), this.$handle
					.on(this.eventName("dragstart selectstart"), function() {
						return !1
					})), this.options.touchDrag && o.touch && (this.$handle.on(this.eventName("touchstart"), c.proxy(this.onDragStart,
					this)), this.$handle.on(this.eventName("touchcancel"), c.proxy(this.onDragEnd, this))), this.options.pointerDrag &&
				o.pointer && (this.$handle.on(this.eventName(o.prefixPointerEvent("pointerdown")), c.proxy(this.onDragStart, this)),
					this.$handle.on(this.eventName(o.prefixPointerEvent("pointercancel")), c.proxy(this.onDragEnd, this))), this.options
				.clickMove && this.$bar.on(this.eventName("mousedown"), c.proxy(this.onClick, this)), this.options.mousewheel &&
				this.$bar.on(this.eventName("mousewheel"), function(b, c) {
					var d = a.getHandlePosition();
					return 0 >= d && c > 0 ? !0 : d >= a.barLength && 0 > c ? !0 : (d -= a.options.mousewheelSpeed * c, a.move(d, !
						0), !1)
				}), this.$bar.on(this.eventName("mouseenter"), function() {
					a.$bar.addClass(a.options.hoveringClass), a.enter("hovering"), a.trigger("hover")
				}), this.$bar.on(this.eventName("mouseleave"), function() {
					a.$bar.removeClass(a.options.hoveringClass), a.is("hovering") && (a.leave("hovering"), a.trigger("hovered"))
				}), this.options.keyboard && c(b).on(this.eventName("keydown"), function(d) {
					if ((!d.isDefaultPrevented || !d.isDefaultPrevented()) && a.is("hovering")) {
						for (var e = b.activeElement; e.shadowRoot;) e = e.shadowRoot.activeElement;
						if (!c(e).is(":input,select,option,[contenteditable]")) {
							var f = 0,
								g = null;
							switch (d.which) {
								case 37:
								case 63232:
									f = -30;
									break;
								case 38:
								case 63233:
									f = -30;
									break;
								case 39:
								case 63234:
									f = 30;
									break;
								case 40:
								case 63235:
									f = 30;
									break;
								case 33:
								case 63276:
									f = -90;
									break;
								case 32:
								case 34:
								case 63277:
									f = -90;
									break;
								case 35:
								case 63275:
									g = "100%";
									break;
								case 36:
								case 63273:
									g = 0;
									break;
								default:
									return
							}(f || null !== g) && (f ? a.moveBy(f, !0) : null !== g && a.moveTo(g, !0), d.preventDefault())
						}
					}
				})
		},
		onClick: function(a) {
			if (3 !== a.which && a.target !== this.$handle[0]) {
				this._drag.time = (new Date).getTime(), this._drag.pointer = this.pointer(a);
				var b = this.$handle.offset(),
					c = this.distance({
						x: b.left,
						y: b.top
					}, this._drag.pointer),
					d = 1;
				c > 0 ? c -= this.handleLength : (c = Math.abs(c), d = -1), c > this.barLength * this.options.clickMoveStep && (c =
					this.barLength * this.options.clickMoveStep), this.moveBy(d * c, !0)
			}
		},
		onDragStart: function(a) {
			var d = this;
			if (3 !== a.which) {
				this.$bar.addClass(this.options.draggingClass), this._drag.time = (new Date).getTime(), this._drag.pointer = this
					.pointer(a);
				var e = function() {
					d.enter("dragging"), d.trigger("drag")
				};
				this.options.mouseDrag && (c(b).on(d.eventName("mouseup"), c.proxy(this.onDragEnd, this)), c(b).one(d.eventName(
					"mousemove"), c.proxy(function() {
					c(b).on(d.eventName("mousemove"), c.proxy(this.onDragMove, this)), e()
				}, this))), this.options.touchDrag && o.touch && (c(b).on(d.eventName("touchend"), c.proxy(this.onDragEnd, this)),
					c(b).one(d.eventName("touchmove"), c.proxy(function() {
						c(b).on(d.eventName("touchmove"), c.proxy(this.onDragMove, this)), e()
					}, this))), this.options.pointerDrag && o.pointer && (c(b).on(d.eventName(o.prefixPointerEvent("pointerup")), c
					.proxy(this.onDragEnd, this)), c(b).one(d.eventName(o.prefixPointerEvent("pointermove")), c.proxy(function() {
					c(b).on(d.eventName(o.prefixPointerEvent("pointermove")), c.proxy(this.onDragMove, this)), e()
				}, this))), c(b).on(d.eventName("blur"), c.proxy(this.onDragEnd, this))
			}
		},
		onDragMove: function(a) {
			var b = this.distance(this._drag.pointer, this.pointer(a));
			this.is("dragging") && (a.preventDefault(), this.moveBy(b, !0))
		},
		onDragEnd: function() {
			c(b).off(this.eventName(
				"mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur")), this.$bar.removeClass(
				this.options.draggingClass), this.handlePosition = this.getHandlePosition(), this.is("dragging") && (this.leave(
				"dragging"), this.trigger("dragged"))
		},
		pointer: function(b) {
			var c = {
				x: null,
				y: null
			};
			return b = b.originalEvent || b || a.event, b = b.touches && b.touches.length ? b.touches[0] : b.changedTouches &&
				b.changedTouches.length ? b.changedTouches[0] : b, b.pageX ? (c.x = b.pageX, c.y = b.pageY) : (c.x = b.clientX, c
					.y = b.clientY), c
		},
		distance: function(a, b) {
			return "vertical" === this.options.direction ? b.y - a.y : b.x - a.x
		},
		setBarLength: function(a, b) {
			"undefined" != typeof a && this.$bar.css(this.attributes.length, a), b !== !1 && this.updateLength()
		},
		setHandleLength: function(a, b) {
			"undefined" != typeof a && (a < this.options.minHandleLength ? a = this.options.minHandleLength : this.options.maxHandleLength &&
				a > this.options.maxHandleLength && (a = this.options.maxHandleLength), this.$handle.css(this.attributes.length,
					a), b !== !1 && this.updateLength(a))
		},
		updateLength: function(a, b) {
			this.handleLength = "undefined" != typeof a ? a : this.getHandleLenght(), this.barLength = "undefined" != typeof b ?
				b : this.getBarLength()
		},
		getBarLength: function() {
			return this.$bar[0][this.attributes.clientLength]
		},
		getHandleLenght: function() {
			return this.$handle[0][this.attributes.clientLength]
		},
		getHandlePosition: function() {
			var a;
			if (this.options.useCssTransforms && o.transform) {
				if (a = h(this.$handle.css(o.transform)), !a) return 0;
				a = "X" === this.attributes.axis ? a[12] || a[4] : a[13] || a[5]
			} else a = this.$handle.css(this.attributes.position);
			return parseFloat(a.replace("px", ""))
		},
		makeHandlePositionStyle: function(a) {
			var b, c = "0",
				d = "0";
			this.options.useCssTransforms && o.transform ? ("X" === this.attributes.axis ? c = a + "px" : d = a + "px", b = o.transform
				.toString(), a = this.options.useCssTransforms3d && o.transform3d ? "translate3d(" + c + "," + d + ",0)" :
				"translate(" + c + "," + d + ")") : b = this.attributes.position;
			var e = {};
			return e[b] = a, e
		},
		setHandlePosition: function(a) {
			var b = this.makeHandlePositionStyle(a);
			this.$handle.css(b), this.is("dragging") || (this.handlePosition = parseFloat(a))
		},
		moveTo: function(a, b, c) {
			var d = typeof a;
			"string" === d && (f(a) && (a = g(a) * (this.barLength - this.handleLength)), a = parseFloat(a), d = "number"),
				"number" === d && this.move(a, b, c)
		},
		moveBy: function(a, b, c) {
			var d = typeof a;
			"string" === d && (f(a) && (a = g(a) * (this.barLength - this.handleLength)), a = parseFloat(a), d = "number"),
				"number" === d && this.move(this.handlePosition + a, b, c)
		},
		move: function(a, b, c) {
			"number" != typeof a || this.is("disabled") || (0 > a ? a = 0 : a + this.handleLength > this.barLength && (a =
				this.barLength - this.handleLength), this.is("dragging") || c === !0 ? (this.setHandlePosition(a), b && this.trigger(
				"change", a / (this.barLength - this.handleLength))) : this.doMove(a, this.options.duration, this.options.easing,
				b))
		},
		doMove: function(b, c, d, f) {
			this.enter("moving"), c = c ? c : this.options.duration, d = d ? d : this.options.easing;
			var g = this,
				h = this.makeHandlePositionStyle(b);
			for (var i in h) break;
			if (this.options.useCssTransitions && o.transition) g.enter("transition"), this.prepareTransition(i, c, d), this.$handle
				.one(o.transition.end, function() {
					g.$handle.css(o.transition, ""), f && g.trigger("change", b / (g.barLength - g.handleLength)), g.leave(
						"transition"), g.leave("moving")
				}), g.setHandlePosition(b);
			else {
				g.enter("animating");
				var j = e(),
					k = g.getHandlePosition(),
					l = b,
					m = function(b) {
						var c = (b - j) / g.options.duration;
						c > 1 && (c = 1), c = g.easing.fn(c);
						var d = parseFloat(k + c * (l - k), 10);
						g.setHandlePosition(d), f && g.trigger("change", d / (g.barLength - g.handleLength)), 1 === c ? (a.cancelAnimationFrame(
							g._frameId), g._frameId = null, g.leave("animating"), g.leave("moving")) : g._frameId = a.requestAnimationFrame(
							m)
					};
				g._frameId = a.requestAnimationFrame(m)
			}
		},
		prepareTransition: function(a, b, d, e) {
			var f = [];
			a && f.push(a), b && (c.isNumeric(b) && (b += "ms"), f.push(b)), f.push(d ? d : this.easing.css), e && f.push(e),
				this.$handle.css(o.transition, f.join(" "))
		},
		enable: function() {
			this._states.disabled = 0, this.$bar.removeClass(this.options.disabledClass)
		},
		disable: function() {
			this._states.disabled = 1, this.$bar.addClass(this.options.disabledClass)
		},
		destory: function() {
			this.$bar.on(this.eventName())
		}
	}, c.fn[i] = function(a) {
		if ("string" != typeof a) return this.each(function() {
			c(this).data(i) || c(this).data(i, new n(a, this))
		});
		var b = Array.prototype.slice.call(arguments, 1);
		this.each(function() {
			var d = c(this).data(i);
			return d && c.isFunction(d[a]) && "_" !== a.charAt(0) ? void d[a].apply(d, b) : !1
		})
	}
}(window, document, jQuery, void 0),
function(a, b, c, d, e) {
	"use strict";

	function f() {
		return "undefined" != typeof a.performance && a.performance.now ? a.performance.now() : Date.now()
	}

	function g(a) {
		return "string" == typeof a && -1 != a.indexOf("%")
	}

	function h(a) {
		return 0 > a ? a = 0 : a > 1 && (a = 1), 100 * parseFloat(a).toFixed(4) + "%"
	}

	function i(a) {
		return parseFloat(a.slice(0, -1) / 100, 10)
	}
	var j = "asScrollable",
		k = 0,
		l = function() {
			var b, c, d;
			return c = a.navigator.userAgent, (b = /(?=.+Mac OS X)(?=.+Firefox)/.test(c)) ? (d = /Firefox\/\d{2}\./.exec(c), d &&
				(d = d[0].replace(/\D+/g, "")), b && +d > 23) : !1
		}(),
		m = c[j] = function(a, b) {
			this.$element = c(b), a = this.options = c.extend({}, m.defaults, a || {}, this.$element.data("options") || {}),
				this.classes = {
					wrap: a.namespace,
					content: a.namespace + "-content",
					container: a.namespace + "-container",
					bar: a.namespace + "-bar",
					barHide: a.namespace + "-bar-hide",
					skin: a.skin
				}, this.attributes = {
					vertical: {
						axis: "Y",
						overflow: "overflow-y",
						scroll: "scrollTop",
						scrollLength: "scrollHeight",
						pageOffset: "pageYOffset",
						ffPadding: "padding-right",
						length: "height",
						clientLength: "clientHeight",
						offset: "offsetHeight",
						crossLength: "width",
						crossClientLength: "clientWidth",
						crossOffset: "offsetWidth"
					},
					horizontal: {
						axis: "X",
						overflow: "overflow-x",
						scroll: "scrollLeft",
						scrollLength: "scrollWidth",
						pageOffset: "pageXOffset",
						ffPadding: "padding-bottom",
						length: "width",
						clientLength: "clientWidth",
						offset: "offsetWidth",
						crossLength: "height",
						crossClientLength: "clientHeight",
						crossOffset: "offsetHeight"
					}
				}, this._states = {}, this.horizontal = null, this.vertical = null, this.$bar = null, this._frameId = null, this._timeoutId =
				null, this.instanceId = ++k, this.easing = d.easing[this.options.easing] || d.easing.ease;
			var e = this.$element.css("position");
			this.options.containerSelector ? (this.$container = this.$element.find(this.options.containerSelector), this.$wrap =
					this.$element, "static" == e && this.$wrap.css("position", "relative")) : (this.$container = this.$element.wrap(
						"<div>"), this.$wrap = this.$container.parent(), this.$wrap.height(this.$element.height()), "static" !== e ? this
					.$wrap.css("position", e) : this.$wrap.css("position", "relative")), this.options.contentSelector ? this.$content =
				this.$container.find(this.options.contentSelector) : (this.$content = this.$container.wrap("<div>"), this.$container =
					this.$content.parent()), this.init()
		};
	m.defaults = {
		namespace: j,
		skin: null,
		contentSelector: null,
		containerSelector: null,
		enabledClass: "is-enabled",
		disabledClass: "is-disabled",
		draggingClass: "is-dragging",
		hoveringClass: "is-hovering",
		scrollingClass: "is-scrolling",
		direction: "vertical",
		showOnHover: !0,
		showOnBarHover: !1,
		duration: 500,
		easing: "ease-in",
		responsive: !0,
		throttle: 20,
		scrollbar: {}
	}, m.prototype = {
		constructor: m,
		init: function() {
			switch (this.options.direction) {
				case "vertical":
					this.vertical = !0;
					break;
				case "horizontal":
					this.horizontal = !0;
					break;
				case "both":
					this.horizontal = !0, this.vertical = !0;
					break;
				case "auto":
					var a = this.$element.css("overflow-x"),
						b = this.$element.css("overflow-y");
					("scroll" === a || "auto" === a) && (this.horizontal = !0), ("scroll" === b || "auto" === b) && (this.vertical = !
						0)
			}(this.vertical || this.horizontal) && (this.$wrap.addClass(this.classes.wrap), this.$container.addClass(this.classes
				.container), this.$content.addClass(this.classes.content), this.options.skin && this.$wrap.addClass(this.classes
				.skin), this.$wrap.addClass(this.options.enabledClass), this.vertical && (this.$wrap.addClass(this.classes.wrap +
				"-vertical"), this.initLayout("vertical"), this.createBar("vertical")), this.horizontal && (this.$wrap.addClass(
				this.classes.wrap + "-horizontal"), this.initLayout("horizontal"), this.createBar("horizontal")), this.bindEvents())
		},
		bindEvents: function() {
			var b = this,
				d = this.options;
			d.responsive && (c(a).on(this.eventNameWithId("orientationchange"), function() {
				b.update.call(b)
			}), c(a).on(this.eventNameWithId("resize"), this.throttle(function() {
				b.update.call(b)
			}, d.throttle))), (this.horizontal || this.vertical) && (this.$wrap.on(this.eventName("mouseenter"), function() {
				b.$wrap.addClass(b.options.hoveringClass), b.enter("hovering"), b.trigger("hover")
			}), this.$wrap.on(this.eventName("mouseleave"), function() {
				b.$wrap.removeClass(b.options.hoveringClass), b.is("hovering") && (b.leave("hovering"), b.trigger("hovered"))
			}), d.showOnHover && (d.showOnBarHover ? this.$bar.on("asScrollbar::hover", function() {
				b.showBar(this.direction)
			}).on("asScrollbar::hovered", function() {
				b.hideBar(this.direction)
			}) : (this.$element.on(j + "::hover", c.proxy(this.showBar, this)), this.$element.on(j + "::hovered", c.proxy(
				this.hideBar, this)))), this.$container.on(this.eventName("scroll"), function() {
				if (b.horizontal) {
					var a = b.offsetLeft;
					b.offsetLeft = b.getOffset("horizontal"), a !== b.offsetLeft && (b.trigger("scroll", b.getPercentOffset(
							"horizontal"), "horizontal"), 0 === b.offsetLeft && b.trigger("scrolltop", "horizontal"), b.offsetLeft ===
						b.getScrollLength("horizontal") && b.trigger("scrollend", "horizontal"))
				}
				if (b.vertical) {
					var c = b.offsetTop;
					b.offsetTop = b.getOffset("vertical"), c !== b.offsetTop && (b.trigger("scroll", b.getPercentOffset(
						"vertical"), "vertical"), 0 === b.offsetTop && b.trigger("scrolltop", "vertical"), b.offsetTop === b.getScrollLength(
						"vertical") && b.trigger("scrollend", "vertical"))
				}
			}), this.$element.on(j + "::scroll", function(a, c, d, e) {
				b.is("scrolling") || (b.enter("scrolling"), b.$wrap.addClass(b.options.scrollingClass));
				var f = c.getBarApi(e);
				f.moveTo(h(d), !1, !0), clearTimeout(b._timeoutId), b._timeoutId = setTimeout(function() {
					b.$wrap.removeClass(b.options.scrollingClass), b.leave("scrolling")
				}, 200)
			}), this.$bar.on("asScrollbar::change", function(a, c, d) {
				b.scrollTo(this.direction, h(d), !1, !0)
			}), this.$bar.on("asScrollbar::drag", function() {
				b.$wrap.addClass(b.options.draggingClass)
			}).on("asScrollbar::dragged", function() {
				b.$wrap.removeClass(b.options.draggingClass)
			}))
		},
		unbindEvents: function() {
			this.$wrap.off(this.eventName()), this.$element.off(j + "::scroll").off(j + "::hover").off(j + "::hovered"), this.$container
				.off(this.eventName()), c(a).off(this.eventNameWithId())
		},
		initLayout: function(a) {
			"vertical" === a && this.$container.css("height", this.$wrap.height());
			var b = this.attributes[a],
				c = this.$container[0],
				d = this.getBrowserScrollbarWidth(a),
				e = c.parentNode[b.crossClientLength];
			this.$content.css(b.crossLength, e + "px"), this.$container.css(b.crossLength, d + e + "px"), 0 === d && l && this
				.$container.css(b.ffPadding, 16)
		},
		createBar: function(a) {
			var b = c.extend(this.options.scrollbar, {
					namespace: this.classes.bar,
					direction: a,
					useCssTransitions: !1,
					keyboard: !1
				}),
				d = c("<div>");
			d.asScrollbar(b), this.options.showOnHover && d.addClass(this.classes.barHide), d.appendTo(this.$wrap), this["$" +
				a] = d, this.$bar = null === this.$bar ? d : this.$bar.add(d), this.updateBarHandle(a)
		},
		trigger: function(a) {
			var b = Array.prototype.slice.call(arguments, 1),
				c = [this].concat(b);
			this.$element.trigger(j + "::" + a, c), a = a.replace(/\b\w+\b/g, function(a) {
				return a.substring(0, 1).toUpperCase() + a.substring(1)
			});
			var d = "on" + a;
			"function" == typeof this.options[d] && this.options[d].apply(this, b)
		},
		is: function(a) {
			return this._states[a] && this._states[a] > 0
		},
		enter: function(a) {
			this._states[a] === e && (this._states[a] = 0), this._states[a]++
		},
		leave: function(a) {
			this._states[a]--
		},
		eventName: function(a) {
			if ("string" != typeof a || "" === a) return "." + this.options.namespace;
			a = a.split(" ");
			for (var b = a.length, c = 0; b > c; c++) a[c] = a[c] + "." + this.options.namespace;
			return a.join(" ")
		},
		eventNameWithId: function(a) {
			if ("string" != typeof a || "" === a) return this.options.namespace + "-" + this.instanceId;
			a = a.split(" ");
			for (var b = a.length, c = 0; b > c; c++) a[c] = a[c] + "." + this.options.namespace + "-" + this.instanceId;
			return a.join(" ")
		},
		throttle: function(a, b) {
			var c, d, e, f = Date.now || function() {
					return (new Date).getTime()
				},
				g = null,
				h = 0,
				i = function() {
					h = f(), g = null, e = a.apply(c, d), c = d = null
				};
			return function() {
				var j = f(),
					k = b - (j - h);
				return c = this, d = arguments, 0 >= k ? (clearTimeout(g), g = null, h = j, e = a.apply(c, d), c = d = null) : g ||
					(g = setTimeout(i, k)), e
			}
		},
		getBrowserScrollbarWidth: function(a) {
			var c, d, e = this.attributes[a];
			return e.scrollbarWidth ? e.scrollbarWidth : (c = b.createElement("div"), d = c.style, d.position = "absolute", d.width =
				"100px", d.height = "100px", d.overflow = "scroll", d.top = "-9999px", b.body.appendChild(c), e.scrollbarWidth =
				c[e.offset] - c[e.clientLength], b.body.removeChild(c), e.scrollbarWidth)
		},
		getOffset: function(a) {
			var b = this.attributes[a],
				c = this.$container[0];
			return c[b.pageOffset] || c[b.scroll]
		},
		getPercentOffset: function(a) {
			return this.getOffset(a) / this.getScrollLength(a)
		},
		getContainerLength: function(a) {
			return this.$container[0][this.attributes[a].clientLength]
		},
		getScrollLength: function(a) {
			var b = this.$content[0][this.attributes[a].scrollLength];
			return b - this.getContainerLength(a)
		},
		scrollTo: function(a, b, c, d) {
			var e = typeof b;
			"string" === e && (g(b) && (b = i(b) * this.getScrollLength(a)), b = parseFloat(b), e = "number"), "number" === e &&
				this.move(a, b, c, d)
		},
		scrollBy: function(a, b, c, d) {
			var e = typeof b;
			"string" === e && (g(b) && (b = i(b) * this.getScrollLength(a)), b = parseFloat(b), e = "number"), "number" === e &&
				this.move(a, this.getOffset(a) + b, c, d)
		},
		move: function(b, c, d, e) {
			if (this[b] === !0 && "number" == typeof c) {
				var g = this;
				this.enter("moving"), 0 > c ? c = 0 : c > this.getScrollLength(b) && (c = this.getScrollLength(b));
				var h = this.attributes[b],
					i = function() {
						g.leave("moving")
					};
				if (e) this.$container[0][h.scroll] = c, d !== !1 && this.trigger("change", c / this.getScrollLength(b)), i();
				else {
					g.enter("animating");
					var j = f(),
						k = g.getOffset(b),
						l = c,
						m = function(e) {
							var f = (e - j) / g.options.duration;
							f > 1 && (f = 1), f = g.easing.fn(f);
							var n = parseFloat(k + f * (l - k), 10);
							g.$container[0][h.scroll] = n, d !== !1 && g.trigger("change", c / g.getScrollLength(b)), 1 === f ? (a.cancelAnimationFrame(
								g._frameId), g._frameId = null, g.leave("animating"), i()) : g._frameId = a.requestAnimationFrame(m)
						};
					g._frameId = a.requestAnimationFrame(m)
				}
			}
		},
		scrollXto: function(a, b, c) {
			return this.scrollTo("horizontal", a, b, c)
		},
		scrollYto: function(a, b, c) {
			return this.scrollTo("vertical", a, b, c)
		},
		scrollXby: function(a, b, c) {
			return this.scrollBy("horizontal", a, b, c)
		},
		scrollYby: function(a, b, c) {
			return this.scrollBy("vertical", a, b, c)
		},
		getBar: function(a) {
			return a && this["$" + a] ? this["$" + a] : this.$bar
		},
		getBarApi: function(a) {
			return this.getBar(a).data("asScrollbar")
		},
		getBarX: function() {
			return this.getBar("horizontal")
		},
		getBarY: function() {
			return this.getBar("vertical")
		},
		showBar: function(a) {
			this.getBar(a).removeClass(this.classes.barHide)
		},
		hideBar: function(a) {
			this.getBar(a).addClass(this.classes.barHide)
		},
		updateBarHandle: function(a) {
			var b = this.getBarApi(a),
				c = this.getScrollLength(a),
				d = this.getContainerLength(a);
			c > 0 ? (b.is("disabled") && b.enable(), b.setHandleLength(b.getBarLength() * d / (c + d), !0)) : b.disable()
		},
		disable: function() {
			this.is("disabled") || (this.enter("disabled"), this.$wrap.addClass(this.options.disabledClass).removeClass(this.options
				.enabledClass), this.unbindEvents(), this.unStyle())
		},
		enable: function() {
			this.is("disabled") && (this.leave("disabled"), this.$wrap.addClass(this.options.enabledClass).removeClass(this.options
				.disabledClass), this.bindEvents(), this.update())
		},
		update: function() {
			this.is("disabled") || (this.vertical && (this.initLayout("vertical"), this.updateBarHandle("vertical")), this.horizontal &&
				(this.initLayout("horizontal"), this.updateBarHandle("horizontal")))
		},
		unStyle: function() {
			this.horizontal && (this.$container.css({
				height: "",
				"padding-bottom": ""
			}), this.$content.css({
				height: ""
			})), this.vertical && (this.$container.css({
				width: "",
				height: "",
				"padding-right": ""
			}), this.$content.css({
				width: ""
			})), this.options.containerSelector || this.$wrap.css({
				height: ""
			})
		},
		destory: function() {
			this.$wrap.removeClass(this.classes.wrap + "-vertical").removeClass(this.classes.wrap + "-horizontal").removeClass(
					this.classes.wrap).removeClass(this.options.enabledClass).removeClass(this.classes.disabledClass), this.unStyle(),
				this.$bar && this.$bar.remove(), this.unbindEvents(), this.options.containerSelector ? this.$container.removeClass(
					this.classes.container) : this.$container.unwrap(), this.options.contentSelector || this.$content.unwrap(), this
				.$content.removeClass(this.classes.content), this.$element.data(j, null)
		}
	}, c.fn[j] = function(a) {
		if ("string" != typeof a) return this.each(function() {
			c(this).data(j) ? c(this).data(j).update() : c(this).data(j, new m(a, this))
		});
		var b = a,
			d = Array.prototype.slice.call(arguments, 1);
		if (/^\_/.test(b)) return !1;
		if (!/^(get)/.test(b)) return this.each(function() {
			var a = c.data(this, j);
			a && "function" == typeof a[b] && a[b].apply(a, d)
		});
		var e = this.first().data(j);
		return e && "function" == typeof e[b] ? e[b].apply(e, d) : this
	}
}(window, document, jQuery, function(a) {
	"use strict";
	return void 0 === a.asScrollbar ? !1 : a.asScrollbar
}(jQuery));
/*asscrollable.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
$.components.register("scrollable", {
	mode: "init",
	defaults: {
		namespace: "scrollable",
		contentSelector: "> [data-role='content']",
		containerSelector: "> [data-role='container']"
	},
	init: function(context) {
		if (!$.fn.asScrollable) return;
		var defaults = $.components.getDefaults("scrollable");

		$('[data-plugin="scrollable"]', context).each(function() {
			var options = $.extend({}, defaults, $(this).data());

			$(this).asScrollable(options);
		});
	}
});

/*alertify.js*/
(function() {

	"use strict";

	var TRANSITION_FALLBACK_DURATION = 500;
	var hideElement = function(el) {

		if (!el) {
			return;
		}

		var removeThis = function() {
			if (el && el.parentNode) {
				el.parentNode.removeChild(el);
			}
		};

		el.classList.remove("show");
		el.classList.add("hide");
		el.addEventListener("transitionend", removeThis);

		// Fallback for no transitions.
		setTimeout(removeThis, TRANSITION_FALLBACK_DURATION);

	};

	function Alertify() {

		/**
		 * Alertify private object
		 * @type {Object}
		 */
		var _alertify = {

			version: "1.0.8",
			defaultOkLabel: "Ok",
			okLabel: "Ok",
			defaultCancelLabel: "Cancel",
			cancelLabel: "Cancel",
			defaultMaxLogItems: 2,
			maxLogItems: 2,
			promptValue: "",
			promptPlaceholder: "",
			closeLogOnClick: false,
			closeLogOnClickDefault: false,
			delay: 5000,
			defaultDelay: 5000,
			logContainerClass: "alertify-logs",
			logContainerDefaultClass: "alertify-logs",
			dialogs: {
				buttons: {
					holder: "<nav>{{buttons}}</nav>",
					ok: "<button class='ok' tabindex='1'>{{ok}}</button>",
					cancel: "<button class='cancel' tabindex='2'>{{cancel}}</button>"
				},
				input: "<input type='text'>",
				message: "<p class='msg'>{{message}}</p>",
				log: "<div class='{{class}}'>{{message}}</div>"
			},

			defaultDialogs: {
				buttons: {
					holder: "<nav>{{buttons}}</nav>",
					ok: "<button class='ok' tabindex='1'>{{ok}}</button>",
					cancel: "<button class='cancel' tabindex='2'>{{cancel}}</button>"
				},
				input: "<input type='text'>",
				message: "<p class='msg'>{{message}}</p>",
				log: "<div class='{{class}}'>{{message}}</div>"
			},

			/**
			 * Build the proper message box
			 *
			 * @param  {Object} item    Current object in the queue
			 *
			 * @return {String}         An HTML string of the message box
			 */
			build: function(item) {

				var btnTxt = this.dialogs.buttons.ok;
				var html = "<div class='dialog'>" + "<div>" + this.dialogs.message.replace("{{message}}", item.message);

				if (item.type === "confirm" || item.type === "prompt") {
					btnTxt = this.dialogs.buttons.cancel + this.dialogs.buttons.ok;
				}

				if (item.type === "prompt") {
					html += this.dialogs.input;
				}

				html = (html + this.dialogs.buttons.holder + "</div>" + "</div>")
					.replace("{{buttons}}", btnTxt)
					.replace("{{ok}}", this.okLabel)
					.replace("{{cancel}}", this.cancelLabel);

				return html;

			},

			setCloseLogOnClick: function(bool) {
				this.closeLogOnClick = !!bool;
			},

			/**
			 * Close the log messages
			 *
			 * @param  {Object} elem    HTML Element of log message to close
			 * @param  {Number} wait    [optional] Time (in ms) to wait before automatically hiding the message, if 0 never hide
			 *
			 * @return {undefined}
			 */
			close: function(elem, wait) {

				if (this.closeLogOnClick) {
					elem.addEventListener("click", function(ev) {
						hideElement(ev.srcElement);
					});
				}

				wait = wait && !isNaN(+wait) ? +wait : this.delay;

				if (wait < 0) {
					hideElement(elem);
				} else if (wait > 0) {
					setTimeout(function() {
						hideElement(elem);
					}, wait);
				}

			},

			/**
			 * Create a dialog box
			 *
			 * @param  {String}   message      The message passed from the callee
			 * @param  {String}   type         Type of dialog to create
			 * @param  {Function} onOkay       [Optional] Callback function when clicked okay.
			 * @param  {Function} onCancel     [Optional] Callback function when cancelled.
			 *
			 * @return {Object}
			 */
			dialog: function(message, type, onOkay, onCancel) {
				return this.setup({
					type: type,
					message: message,
					onOkay: onOkay,
					onCancel: onCancel
				});
			},

			/**
			 * Show a new log message box
			 *
			 * @param  {String} message    The message passed from the callee
			 * @param  {String} type       [Optional] Optional type of log message
			 * @param  {Number} wait       [Optional] Time (in ms) to wait before auto-hiding the log
			 *
			 * @return {Object}
			 */
			log: function(message, type, click) {

				var existing = document.querySelectorAll(".alertify-logs > div");
				if (existing) {
					var diff = existing.length - this.maxLogItems;
					if (diff >= 0) {
						for (var i = 0, _i = diff + 1; i < _i; i++) {
							this.close(existing[i], -1);
						}
					}
				}

				this.notify(message, type, click);
			},

			setLogPosition: function(str) {
				this.logContainerClass = "alertify-logs " + str;
			},

			setupLogContainer: function() {

				var elLog = document.querySelector(".alertify-logs");
				var className = this.logContainerClass;
				if (!elLog) {
					elLog = document.createElement("div");
					elLog.className = className;
					document.body.appendChild(elLog);
				}

				// Make sure it's positioned properly.
				if (elLog.className !== className) {
					elLog.className = className;
				}

				return elLog;

			},

			/**
			 * Add new log message
			 * If a type is passed, a class name "{type}" will get added.
			 * This allows for custom look and feel for various types of notifications.
			 *
			 * @param  {String} message    The message passed from the callee
			 * @param  {String} type       [Optional] Type of log message
			 * @param  {Number} wait       [Optional] Time (in ms) to wait before auto-hiding
			 *
			 * @return {undefined}
			 */
			notify: function(message, type, click) {

				var elLog = this.setupLogContainer();
				var log = document.createElement("div");

				log.className = (type || "default");
				if (_alertify.logTemplateMethod) {
					log.innerHTML = _alertify.logTemplateMethod(message);
				} else {
					log.innerHTML = message;
				}

				// Add the click handler, if specified.
				if ("function" === typeof click) {
					log.addEventListener("click", click);
				}

				elLog.appendChild(log);
				setTimeout(function() {
					log.className += " show";
				}, 10);

				this.close(log, this.delay);

			},

			/**
			 * Initiate all the required pieces for the dialog box
			 *
			 * @return {undefined}
			 */
			setup: function(item) {

				var el = document.createElement("div");
				el.className = "alertify hide";
				el.innerHTML = this.build(item);

				var btnOK = el.querySelector(".ok");
				var btnCancel = el.querySelector(".cancel");
				var input = el.querySelector("input");
				var label = el.querySelector("label");

				// Set default value/placeholder of input
				if (input) {
					if (typeof this.promptPlaceholder === "string") {
						// Set the label, if available, for MDL, etc.
						if (label) {
							label.textContent = this.promptPlaceholder;
						} else {
							input.placeholder = this.promptPlaceholder;
						}
					}
					if (typeof this.promptValue === "string") {
						input.value = this.promptValue;
					}
				}

				function setupHandlers(resolve) {
					if ("function" !== typeof resolve) {
						// promises are not available so resolve is a no-op
						resolve = function() {};
					}

					if (btnOK) {
						btnOK.addEventListener("click", function(ev) {
							if (item.onOkay && "function" === typeof item.onOkay) {
								if (input) {
									item.onOkay(input.value, ev);
								} else {
									item.onOkay(ev);
								}
							}

							if (input) {
								resolve({
									buttonClicked: "ok",
									inputValue: input.value,
									event: ev
								});
							} else {
								resolve({
									buttonClicked: "ok",
									event: ev
								});
							}

							hideElement(el);
						});
					}

					if (btnCancel) {
						btnCancel.addEventListener("click", function(ev) {
							if (item.onCancel && "function" === typeof item.onCancel) {
								item.onCancel(ev);
							}

							resolve({
								buttonClicked: "cancel",
								event: ev
							});

							hideElement(el);
						});
					}
				}

				var promise;

				if (typeof Promise === "function") {
					promise = new Promise(setupHandlers);
				} else {
					setupHandlers();
				}

				document.body.appendChild(el);
				setTimeout(function() {
					el.classList.remove("hide");
					if (input && item.type && item.type === "prompt") {
						input.select();
						input.focus();
					} else {
						if (btnOK) {
							btnOK.focus();
						}
					}
				}, 100);

				return promise;
			},

			okBtn: function(label) {
				this.okLabel = label;
				return this;
			},

			setDelay: function(time) {
				var dur = parseInt(time || 0, 10);
				this.delay = isNaN(dur) ? this.defultDelay : time;
				return this;
			},

			cancelBtn: function(str) {
				this.cancelLabel = str;
				return this;
			},

			setMaxLogItems: function(num) {
				this.maxLogItems = parseInt(num || this.defaultMaxLogItems);
			},

			theme: function(themeStr) {
				switch (themeStr.toLowerCase()) {
					case "bootstrap":
						this.dialogs.buttons.ok = "<button class='ok btn btn-primary' tabindex='1'>{{ok}}</button>";
						this.dialogs.buttons.cancel = "<button class='cancel btn btn-default' tabindex='2'>{{cancel}}</button>";
						this.dialogs.input = "<input type='text' class='form-control'>";
						break;
					case "purecss":
						this.dialogs.buttons.ok = "<button class='ok pure-button' tabindex='1'>{{ok}}</button>";
						this.dialogs.buttons.cancel = "<button class='cancel pure-button' tabindex='2'>{{cancel}}</button>";
						break;
					case "mdl":
					case "material-design-light":
						this.dialogs.buttons.ok =
							"<button class='ok mdl-button mdl-js-button mdl-js-ripple-effect'  tabindex='1'>{{ok}}</button>";
						this.dialogs.buttons.cancel =
							"<button class='cancel mdl-button mdl-js-button mdl-js-ripple-effect' tabindex='2'>{{cancel}}</button>";
						this.dialogs.input =
							"<div class='mdl-textfield mdl-js-textfield'><input class='mdl-textfield__input'><label class='md-textfield__label'></label></div>";
						break;
					case "angular-material":
						this.dialogs.buttons.ok = "<button class='ok md-primary md-button' tabindex='1'>{{ok}}</button>";
						this.dialogs.buttons.cancel = "<button class='cancel md-button' tabindex='2'>{{cancel}}</button>";
						this.dialogs.input =
							"<div layout='column'><md-input-container md-no-float><input type='text'></md-input-container></div>";
						break;
					case "default":
					default:
						this.dialogs.buttons.ok = this.defaultDialogs.buttons.ok;
						this.dialogs.buttons.cancel = this.defaultDialogs.buttons.cancel;
						this.dialogs.input = this.defaultDialogs.input;
						break;
				}
			},

			reset: function() {
				this.theme("default");
				this.okBtn(this.defaultOkLabel);
				this.cancelBtn(this.defaultCancelLabel);
				this.setMaxLogItems();
				this.promptValue = "";
				this.promptPlaceholder = "";
				this.delay = this.defaultDelay;
				this.setCloseLogOnClick(this.closeLogOnClickDefault);
				this.setLogPosition("bottom left");
				this.logTemplateMethod = null;
			},

			injectCSS: function() {
				if (!document.querySelector("#alertifyCSS")) {
					var head = document.getElementsByTagName("head")[0];
					var css = document.createElement("style");
					css.type = "text/css";
					css.id = "alertifyCSS";
					css.innerHTML = "/* style.css */";
					head.insertBefore(css, head.firstChild);
				}
			},

			removeCSS: function() {
				var css = document.querySelector("#alertifyCSS");
				if (css && css.parentNode) {
					css.parentNode.removeChild(css);
				}
			}

		};

		_alertify.injectCSS();

		return {
			_$$alertify: _alertify,
			reset: function() {
				_alertify.reset();
				return this;
			},
			alert: function(message, onOkay, onCancel) {
				return _alertify.dialog(message, "alert", onOkay, onCancel) || this;
			},
			confirm: function(message, onOkay, onCancel) {
				return _alertify.dialog(message, "confirm", onOkay, onCancel) || this;
			},
			prompt: function(message, onOkay, onCancel) {
				return _alertify.dialog(message, "prompt", onOkay, onCancel) || this;
			},
			log: function(message, click) {
				_alertify.log(message, "default", click);
				return this;
			},
			theme: function(themeStr) {
				_alertify.theme(themeStr);
				return this;
			},
			success: function(message, click) {
				_alertify.log(message, "success", click);
				return this;
			},
			error: function(message, click) {
				_alertify.log(message, "error", click);
				return this;
			},
			cancelBtn: function(label) {
				_alertify.cancelBtn(label);
				return this;
			},
			okBtn: function(label) {
				_alertify.okBtn(label);
				return this;
			},
			delay: function(time) {
				_alertify.setDelay(time);
				return this;
			},
			placeholder: function(str) {
				_alertify.promptPlaceholder = str;
				return this;
			},
			defaultValue: function(str) {
				_alertify.promptValue = str;
				return this;
			},
			maxLogItems: function(num) {
				_alertify.setMaxLogItems(num);
				return this;
			},
			closeLogOnClick: function(bool) {
				_alertify.setCloseLogOnClick(!!bool);
				return this;
			},
			logPosition: function(str) {
				_alertify.setLogPosition(str || "");
				return this;
			},
			setLogTemplate: function(templateMethod) {
				_alertify.logTemplateMethod = templateMethod;
				return this;
			},
			clearLogs: function() {
				_alertify.setupLogContainer().innerHTML = "";
				return this;
			},
			version: _alertify.version
		};
	}

	// AMD, window, and NPM support
	if ("undefined" !== typeof module && !!module && !!module.exports) {
		// Preserve backwards compatibility
		module.exports = function() {
			return new Alertify();
		};
		var obj = new Alertify();
		for (var key in obj) {
			module.exports[key] = obj[key];
		}
	} else if (typeof define === "function" && define.amd) {
		define(function() {
			return new Alertify();
		});
	} else {
		window.alertify = new Alertify();
	}

}());

/*jquery.appear.js*/
/*
 * jQuery appear plugin
 *
 * Copyright (c) 2012 Andrey Sidorov
 * licensed under MIT license.
 *
 * https://github.com/morr/jquery.appear/
 *
 * Version: 0.3.6
 */
(function($) {
	var selectors = [];

	var check_binded = false;
	var check_lock = false;
	var defaults = {
		interval: 250,
		force_process: false
	};
	var $window = $(window);

	var $prior_appeared = [];

	function process() {
		check_lock = false;
		for (var index = 0, selectorsLength = selectors.length; index < selectorsLength; index++) {
			var $appeared = $(selectors[index]).filter(function() {
				return $(this).is(':appeared');
			});

			$appeared.trigger('appear', [$appeared]);

			if ($prior_appeared[index]) {
				var $disappeared = $prior_appeared[index].not($appeared);
				$disappeared.trigger('disappear', [$disappeared]);
			}
			$prior_appeared[index] = $appeared;
		}
	};

	function add_selector(selector) {
		selectors.push(selector);
		$prior_appeared.push();
	}

	// "appeared" custom filter
	$.expr[':']['appeared'] = function(element) {
		var $element = $(element);
		if (!$element.is(':visible')) {
			return false;
		}

		var window_left = $window.scrollLeft();
		var window_top = $window.scrollTop();
		var offset = $element.offset();
		var left = offset.left;
		var top = offset.top;

		if (top + $element.height() >= window_top &&
			top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() &&
			left + $element.width() >= window_left &&
			left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) {
			return true;
		} else {
			return false;
		}
	};

	$.fn.extend({
		// watching for element's appearance in browser viewport
		appear: function(options) {
			var opts = $.extend({}, defaults, options || {});
			var selector = this.selector || this;
			if (!check_binded) {
				var on_check = function() {
					if (check_lock) {
						return;
					}
					check_lock = true;

					setTimeout(process, opts.interval);
				};

				$(window).scroll(on_check).resize(on_check);
				check_binded = true;
			}

			if (opts.force_process) {
				setTimeout(process, opts.interval);
			}
			add_selector(selector);
			return $(selector);
		}
	});

	$.extend({
		// force elements's appearance check
		force_appear: function() {
			if (check_binded) {
				process();
				return true;
			}
			return false;
		}
	});
})(function() {
	if (typeof module !== 'undefined') {
		// Node
		return require('jquery');
	} else {
		return jQuery;
	}
}());

/*jquery-appear.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
$.components.register("appear", {
	defaults: {},
	api: function(context) {
		$.fn.appear && ($(document).on("appear", '[data-plugin="appear"]', function() {
			var $item = $(this),
				animate = $item.data("animate");
			$item.hasClass("appear-no-repeat") || ($item.removeClass("invisible").addClass("animation-" + animate), $item.data(
				"repeat") === !1 && $item.addClass("appear-no-repeat"))
		}), $(document).on("disappear", '[data-plugin="appear"]', function() {
			var $item = $(this),
				animate = $item.data("animate");
			$item.hasClass("appear-no-repeat") || $item.addClass("invisible").removeClass("animation-" + animate)
		}))
	},
	init: function(context) {
		if ($.fn.appear) {
			var defaults = $.components.getDefaults("appear");
			$('[data-plugin="appear"]', context).appear(defaults), $('[data-plugin="appear"]', context).not(":appeared").addClass(
				"invisible")
		}
	}
});
/*bootstrap-hover-dropdown.min.js*/
/**
 * @preserve
 * Project: Bootstrap Hover Dropdown
 * Author: Cameron Spear
 * Version: v2.2.1
 * Contributors: Mattia Larentis
 * Dependencies: Bootstrap's Dropdown plugin, jQuery
 * Description: A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience.
 * License: MIT
 * Homepage: http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/
 */
! function(e, n) {
	var o = e();
	e.fn.dropdownHover = function(t) {
		return "ontouchstart" in document ? this : (o = o.add(this.parent()), this.each(function() {
			function r() {
				d.parents(".navbar").find(".navbar-toggle").is(":visible") || (n.clearTimeout(a), n.clearTimeout(i), i = n.setTimeout(
					function() {
						o.find(":focus").blur(), v.instantlyCloseOthers === !0 && o.removeClass("open"), n.clearTimeout(i), d.attr(
							"aria-expanded", "true"), s.addClass("open"), d.trigger(h)
					}, v.hoverDelay))
			}
			var a, i, d = e(this),
				s = d.parent(),
				u = {
					delay: 500,
					hoverDelay: 0,
					instantlyCloseOthers: !0
				},
				l = {
					delay: e(this).data("delay"),
					hoverDelay: e(this).data("hover-delay"),
					instantlyCloseOthers: e(this).data("close-others")
				},
				h = "show.bs.dropdown",
				c = "hide.bs.dropdown",
				v = e.extend(!0, {}, u, t, l);
			s.hover(function(e) {
				return s.hasClass("open") || d.is(e.target) ? void r(e) : !0
			}, function() {
				n.clearTimeout(i), a = n.setTimeout(function() {
					d.attr("aria-expanded", "false"), s.removeClass("open"), d.trigger(c)
				}, v.delay)
			}), d.hover(function(e) {
				return s.hasClass("open") || s.is(e.target) ? void r(e) : !0
			}), s.find(".dropdown-submenu").each(function() {
				var o, t = e(this);
				t.hover(function() {
					n.clearTimeout(o), t.children(".dropdown-menu").show(), t.siblings().children(".dropdown-menu").hide()
				}, function() {
					var e = t.children(".dropdown-menu");
					o = n.setTimeout(function() {
						e.hide()
					}, v.delay)
				})
			})
		}))
	}, e(document).ready(function() {
		e('[data-hover="dropdown"]').dropdownHover()
	})
}(jQuery, window);
/*jquery.webui-popover.min.js*/
/*
 *  webui popover plugin  - v1.2.3
 *  A lightWeight popover plugin with jquery ,enchance the  popover plugin of bootstrap with some awesome new features. It works well with bootstrap ,but bootstrap is not necessary!
 *  https://github.com/sandywalker/webui-popover
 *
 *  Made by Sandy Duan
 *  Under MIT License
 */
! function(a, b, c) {
	"use strict";

	function d(b, c) {
		this.$element = a(b), c && ("string" === a.type(c.delay) || "number" === a.type(c.delay)) && (c.delay = {
			show: c.delay,
			hide: c.delay
		}), this.options = a.extend({}, h, c), this._defaults = h, this._name = e, this._targetclick = !1, this.init(), i.push(
			this.$element)
	}
	var e = "webuiPopover",
		f = "webui-popover",
		g = "webui.popover",
		h = {
			placement: "auto",
			width: "auto",
			height: "auto",
			trigger: "click",
			style: "",
			delay: {
				show: null,
				hide: null
			},
			async: {
				before: null,
				success: null
			},
			cache: !0,
			multi: !1,
			arrow: !0,
			title: "",
			content: "",
			closeable: !1,
			padding: !0,
			url: "",
			type: "html",
			animation: null,
			template: '<div class="webui-popover"><div class="arrow"></div><div class="webui-popover-inner"><a href="#" class="close">&times;</a><h3 class="webui-popover-title"></h3><div class="webui-popover-content"><i class="icon-refresh"></i> <p>&nbsp;</p></div></div></div>',
			backdrop: !1,
			dismissible: !0,
			onShow: null,
			onHide: null,
			abortXHR: !0,
			autoHide: !1,
			offsetTop: 0,
			offsetLeft: 0,
			iframeOptions: {
				frameborder: "0",
				allowtransparency: "true",
				id: "",
				name: "",
				scrolling: "",
				onload: "",
				height: "",
				width: ""
			}
		},
		i = [],
		j = a('<div class="webui-popover-backdrop"></div>'),
		k = 0,
		l = !1,
		m = -2e3,
		n = a(c),
		o = function(a, b) {
			return isNaN(a) ? b || 0 : Number(a)
		},
		p = function(a) {
			return a.data("plugin_" + e)
		},
		q = function() {
			for (var a = 0; a < i.length; a++) i[a].webuiPopover("hide");
			n.trigger("hiddenAll." + g)
		},
		r = function(a) {
			var b = {
				x: 0,
				y: 0
			};
			if ("touchstart" === a.type || "touchmove" === a.type || "touchend" === a.type || "touchcancel" === a.type) {
				var c = a.originalEvent.touches[0] || a.originalEvent.changedTouches[0];
				b.x = c.pageX, b.y = c.pageY
			} else("mousedown" === a.type || "mouseup" === a.type || "click" === a.type) && (b.x = a.pageX, b.y = a.pageY);
			return b
		};
	d.prototype = {
		init: function() {
			"click" === this.getTrigger() ? this.$element.off("click touchend").on("click touchend", a.proxy(this.toggle, this)) :
				"hover" === this.getTrigger() && this.$element.off("mouseenter mouseleave click").on("mouseenter", a.proxy(this.mouseenterHandler,
					this)).on("mouseleave", a.proxy(this.mouseleaveHandler, this)), this._poped = !1, this._inited = !0, this._opened = !
				1, this._idSeed = k, this.options.backdrop && j.appendTo(c.body).hide(), k++, "sticky" === this.getTrigger() &&
				this.show()
		},
		destroy: function() {
			for (var a = -1, b = 0; b < i.length; b++)
				if (i[b] === this.$element) {
					a = b;
					break
				} i.splice(a, 1), this.hide(), this.$element.data("plugin_" + e, null), "click" === this.getTrigger() ? this.$element
				.off("click") : "hover" === this.getTrigger() && this.$element.off("mouseenter mouseleave"), this.$target && this
				.$target.remove()
		},
		hide: function(b, c) {
			if ((b || "sticky" !== this.getTrigger()) && this._opened) {
				c && (c.preventDefault(), c.stopPropagation()), this.xhr && this.options.abortXHR === !0 && (this.xhr.abort(),
					this.xhr = null);
				var d = a.Event("hide." + g);
				if (this.$element.trigger(d, [this.$target]), this.$target) {
					this.$target.removeClass("in").addClass(this.getHideAnimation());
					var e = this;
					setTimeout(function() {
						e.$target.hide()
					}, 300)
				}
				this.options.backdrop && j.hide(), this._opened = !1, this.$element.trigger("hidden." + g, [this.$target]), this.options
					.onHide && this.options.onHide(this.$target)
			}
		},
		resetAutoHide: function() {
			var a = this,
				b = a.getAutoHide();
			b && (a.autoHideHandler && clearTimeout(a.autoHideHandler), a.autoHideHandler = setTimeout(function() {
				a.hide()
			}, b))
		},
		toggle: function(a) {
			a && (a.preventDefault(), a.stopPropagation()), this[this.getTarget().hasClass("in") ? "hide" : "show"]()
		},
		hideAll: function() {
			q()
		},
		show: function() {
			var a = this.getTarget().removeClass().addClass(f).addClass(this._customTargetClass);
			this.options.multi || this.hideAll(), this._opened || (this.getCache() && this._poped && "" !== this.content || (
					this.content = "", this.setTitle(this.getTitle()), this.options.closeable || a.find(".close").off("click").remove(),
					this.isAsync() ? this.setContentASync(this.options.content) : this.setContent(this.getContent()), a.show()),
				this.displayContent(), this.options.onShow && this.options.onShow(a), this.bindBodyEvents(), this.options.backdrop &&
				j.show(), this._opened = !0, this.resetAutoHide())
		},
		displayContent: function() {
			var b = this.getElementPosition(),
				d = this.getTarget().removeClass().addClass(f).addClass(this._customTargetClass),
				e = this.getContentElement(),
				h = d[0].offsetWidth,
				i = d[0].offsetHeight,
				j = "bottom",
				k = a.Event("show." + g);
			this.$element.trigger(k, [d]);
			var l = this.$element.data("width") || this.options.width;
			"" === l && (l = this._defaults.width), "auto" !== l && d.width(l);
			var n = this.$element.data("height") || this.options.height;
			"" === n && (n = this._defaults.height), "auto" !== n && e.height(n), this.options.style && this.$target.addClass(
					f + "-" + this.options.style), this.options.arrow || d.find(".arrow").remove(), d.detach().css({
					top: m,
					left: m,
					display: "block"
				}), this.getAnimation() && d.addClass(this.getAnimation()), d.appendTo(c.body), j = this.getPlacement(b), this.$element
				.trigger("added." + g), this.initTargetEvents(), this.options.padding || ("auto" !== this.options.height && e.css(
					"height", e.outerHeight()), this.$target.addClass("webui-no-padding")), h = d[0].offsetWidth, i = d[0].offsetHeight;
			var o = this.getTargetPositin(b, j, h, i);
			if (this.$target.css(o.position).addClass(j).addClass("in"), "iframe" === this.options.type) {
				var p = d.find("iframe"),
					q = d.width(),
					r = p.parent().height();
				"" !== this.options.iframeOptions.width && "auto" !== this.options.iframeOptions.width && (q = this.options.iframeOptions
					.width), "" !== this.options.iframeOptions.height && "auto" !== this.options.iframeOptions.height && (r = this.options
					.iframeOptions.height), p.width(q).height(r)
			}
			if (this.options.arrow || this.$target.css({
					margin: 0
				}), this.options.arrow) {
				var s = this.$target.find(".arrow");
				s.removeAttr("style"), "left" === j || "right" === j ? s.css({
					top: this.$target.height() / 2
				}) : ("top" === j || "bottom" === j) && s.css({
					left: this.$target.width() / 2
				}), o.arrowOffset && (-1 === o.arrowOffset.left || -1 === o.arrowOffset.top ? s.hide() : s.css(o.arrowOffset))
			}
			this._poped = !0, this.$element.trigger("shown." + g, [this.$target])
		},
		isTargetLoaded: function() {
			return 0 === this.getTarget().find("i.glyphicon-refresh").length
		},
		getTriggerElement: function() {
			return this.$element
		},
		getTarget: function() {
			if (!this.$target) {
				var b = e + this._idSeed;
				this.$target = a(this.options.template).attr("id", b).data("trigger-element", this.getTriggerElement()), this._customTargetClass =
					this.$target.attr("class") !== f ? this.$target.attr("class") : null, this.getTriggerElement().attr(
						"data-target", b)
			}
			return this.$target
		},
		getTitleElement: function() {
			return this.getTarget().find("." + f + "-title")
		},
		getContentElement: function() {
			return this.$contentElement || (this.$contentElement = this.getTarget().find("." + f + "-content")), this.$contentElement
		},
		getTitle: function() {
			return this.$element.attr("data-title") || this.options.title || this.$element.attr("title")
		},
		getUrl: function() {
			return this.$element.attr("data-url") || this.options.url
		},
		getAutoHide: function() {
			return this.$element.attr("data-auto-hide") || this.options.autoHide
		},
		getOffsetTop: function() {
			return o(this.$element.attr("data-offset-top")) || this.options.offsetTop
		},
		getOffsetLeft: function() {
			return o(this.$element.attr("data-offset-left")) || this.options.offsetLeft
		},
		getCache: function() {
			var a = this.$element.attr("data-cache");
			if ("undefined" != typeof a) switch (a.toLowerCase()) {
				case "true":
				case "yes":
				case "1":
					return !0;
				case "false":
				case "no":
				case "0":
					return !1
			}
			return this.options.cache
		},
		getTrigger: function() {
			return this.$element.attr("data-trigger") || this.options.trigger
		},
		getDelayShow: function() {
			var a = this.$element.attr("data-delay-show");
			return "undefined" != typeof a ? a : 0 === this.options.delay.show ? 0 : this.options.delay.show || 100
		},
		getHideDelay: function() {
			var a = this.$element.attr("data-delay-hide");
			return "undefined" != typeof a ? a : 0 === this.options.delay.hide ? 0 : this.options.delay.hide || 100
		},
		getAnimation: function() {
			var a = this.$element.attr("data-animation");
			return a || this.options.animation
		},
		getHideAnimation: function() {
			var a = this.getAnimation();
			return a ? a + "-out" : "out"
		},
		setTitle: function(a) {
			var b = this.getTitleElement();
			a ? b.html(a) : b.remove()
		},
		hasContent: function() {
			return this.getContent()
		},
		getIframe: function() {
			var b = a("<iframe></iframe>").attr("src", this.getUrl()),
				c = this;
			return a.each(this._defaults.iframeOptions, function(a) {
				"undefined" != typeof c.options.iframeOptions[a] && b.attr(a, c.options.iframeOptions[a])
			}), b
		},
		getContent: function() {
			if (this.getUrl()) switch (this.options.type) {
				case "iframe":
					this.content = this.getIframe();
					break;
				case "html":
					try {
						this.content = a(this.getUrl()), this.content.is(":visible") || this.content.show()
					} catch (b) {
						throw new Error("Unable to get popover content. Invalid selector specified.")
					}
			} else if (!this.content) {
				var c = "";
				if (c = a.isFunction(this.options.content) ? this.options.content.apply(this.$element[0], [this]) : this.options
					.content, this.content = this.$element.attr("data-content") || c, !this.content) {
					var d = this.$element.next();
					d && d.hasClass(f + "-content") && (this.content = d)
				}
			} return this.content
		},
		setContent: function(a) {
			var b = this.getTarget(),
				c = this.getContentElement();
			"string" == typeof a ? c.html(a) : a instanceof jQuery && (a.removeClass(f + "-content"), c.html(""), a.appendTo(c)),
				this.$target = b
		},
		isAsync: function() {
			return "async" === this.options.type
		},
		setContentASync: function(b) {
			var c = this;
			this.xhr || (this.xhr = a.ajax({
				url: this.getUrl(),
				type: "GET",
				cache: this.getCache(),
				beforeSend: function(a) {
					c.options.async.before && c.options.async.before(c, a)
				},
				success: function(d) {
					c.bindBodyEvents(), c.content = b && a.isFunction(b) ? b.apply(c.$element[0], [d]) : d, c.setContent(c.content);
					var e = c.getContentElement();
					e.removeAttr("style"), c.displayContent(), c.options.async.success && c.options.async.success(c, d)
				},
				complete: function() {
					c.xhr = null
				}
			}))
		},
		bindBodyEvents: function() {
			this.options.dismissible && "click" === this.getTrigger() && !l && (n.off("keyup.webui-popover").on(
				"keyup.webui-popover", a.proxy(this.escapeHandler, this)), n.off("click.webui-popover touchend.webui-popover").on(
				"click.webui-popover touchend.webui-popover", a.proxy(this.bodyClickHandler, this)))
		},
		mouseenterHandler: function() {
			var a = this;
			a._timeout && clearTimeout(a._timeout), a._enterTimeout = setTimeout(function() {
				a.getTarget().is(":visible") || a.show()
			}, this.getDelayShow())
		},
		mouseleaveHandler: function() {
			var a = this;
			clearTimeout(a._enterTimeout), a._timeout = setTimeout(function() {
				a.hide()
			}, this.getHideDelay())
		},
		escapeHandler: function(a) {
			27 === a.keyCode && this.hideAll()
		},
		bodyClickHandler: function(a) {
			l = !0;
			for (var b = !0, c = 0; c < i.length; c++) {
				var d = p(i[c]);
				if (d._opened) {
					var e = d.getTarget().offset().left,
						f = d.getTarget().offset().top,
						g = d.getTarget().offset().left + d.getTarget().width(),
						h = d.getTarget().offset().top + d.getTarget().height(),
						j = r(a),
						k = j.x >= e && j.x <= g && j.y >= f && j.y <= h;
					if (k) {
						b = !1;
						break
					}
				}
			}
			b && q()
		},
		initTargetEvents: function() {
			"hover" === this.getTrigger() && this.$target.off("mouseenter mouseleave").on("mouseenter", a.proxy(this.mouseenterHandler,
				this)).on("mouseleave", a.proxy(this.mouseleaveHandler, this)), this.$target.find(".close").off("click").on(
				"click", a.proxy(this.hide, this, !0))
		},
		getPlacement: function(a) {
			var b, d = c.documentElement,
				e = c.body,
				f = d.clientWidth,
				g = d.clientHeight,
				h = Math.max(e.scrollTop, d.scrollTop),
				i = Math.max(e.scrollLeft, d.scrollLeft),
				j = Math.max(0, a.left - i),
				k = Math.max(0, a.top - h);
			b = "function" == typeof this.options.placement ? this.options.placement.call(this, this.getTarget()[0], this.$element[
				0]) : this.$element.data("placement") || this.options.placement;
			var l = "horizontal" === b,
				m = "vertical" === b,
				n = "auto" === b || l || m;
			return n ? b = f / 3 > j ? g / 3 > k ? l ? "right-bottom" : "bottom-right" : 2 * g / 3 > k ? m ? g / 2 >= k ?
				"bottom-right" : "top-right" : "right" : l ? "right-top" : "top-right" : 2 * f / 3 > j ? g / 3 > k ? l ? f / 2 >=
				j ? "right-bottom" : "left-bottom" : "bottom" : 2 * g / 3 > k ? l ? f / 2 >= j ? "right" : "left" : g / 2 >= k ?
				"bottom" : "top" : l ? f / 2 >= j ? "right-top" : "left-top" : "top" : g / 3 > k ? l ? "left-bottom" :
				"bottom-left" : 2 * g / 3 > k ? m ? g / 2 >= k ? "bottom-left" : "top-left" : "left" : l ? "left-top" :
				"top-left" : "auto-top" === b ? b = f / 3 > j ? "top-right" : 2 * f / 3 > j ? "top" : "top-left" : "auto-bottom" ===
				b ? b = f / 3 > j ? "bottom-right" : 2 * f / 3 > j ? "bottom" : "bottom-left" : "auto-left" === b ? b = g / 3 > k ?
				"left-top" : 2 * g / 3 > k ? "left" : "left-bottom" : "auto-right" === b && (b = g / 3 > k ? "right-top" : 2 * g /
					3 > k ? "right" : "right-bottom"), b
		},
		getElementPosition: function() {
			return a.extend({}, this.$element.offset(), {
				width: this.$element[0].offsetWidth,
				height: this.$element[0].offsetHeight
			})
		},
		getTargetPositin: function(a, b, d, e) {
			var f = a,
				g = c.documentElement,
				h = c.body,
				i = g.clientWidth,
				j = g.clientHeight,
				k = this.$element.outerWidth(),
				l = this.$element.outerHeight(),
				n = Math.max(h.scrollTop, g.scrollTop),
				o = Math.max(h.scrollLeft, g.scrollLeft),
				p = {},
				q = null,
				r = this.options.arrow ? 20 : 0,
				s = 10,
				t = r + s > k ? r : 0,
				u = r + s > l ? r : 0,
				v = 0,
				w = j + n,
				x = i + o,
				y = f.left + f.width / 2 - t > 0,
				z = f.left + f.width / 2 + t < x,
				A = f.top + f.height / 2 - u > 0,
				B = f.top + f.height / 2 + u < w;
			switch (b) {
				case "bottom":
					p = {
						top: f.top + f.height,
						left: f.left + f.width / 2 - d / 2
					};
					break;
				case "top":
					p = {
						top: f.top - e,
						left: f.left + f.width / 2 - d / 2
					};
					break;
				case "left":
					p = {
						top: f.top + f.height / 2 - e / 2,
						left: f.left - d
					};
					break;
				case "right":
					p = {
						top: f.top + f.height / 2 - e / 2,
						left: f.left + f.width
					};
					break;
				case "top-right":
					p = {
						top: f.top - e,
						left: y ? f.left - t : s
					}, q = {
						left: y ? Math.min(k, d) / 2 + t : m
					};
					break;
				case "top-left":
					v = z ? t : -s, p = {
						top: f.top - e,
						left: f.left - d + f.width + v
					}, q = {
						left: z ? d - Math.min(k, d) / 2 - t : m
					};
					break;
				case "bottom-right":
					p = {
						top: f.top + f.height,
						left: y ? f.left - t : s
					}, q = {
						left: y ? Math.min(k, d) / 2 + t : m
					};
					break;
				case "bottom-left":
					v = z ? t : -s, p = {
						top: f.top + f.height,
						left: f.left - d + f.width + v
					}, q = {
						left: z ? d - Math.min(k, d) / 2 - t : m
					};
					break;
				case "right-top":
					v = B ? u : -s, p = {
						top: f.top - e + f.height + v,
						left: f.left + f.width
					}, q = {
						top: B ? e - Math.min(l, e) / 2 - u : m
					};
					break;
				case "right-bottom":
					p = {
						top: A ? f.top - u : s,
						left: f.left + f.width
					}, q = {
						top: A ? Math.min(l, e) / 2 + u : m
					};
					break;
				case "left-top":
					v = B ? u : -s, p = {
						top: f.top - e + f.height + v,
						left: f.left - d
					}, q = {
						top: B ? e - Math.min(l, e) / 2 - u : m
					};
					break;
				case "left-bottom":
					p = {
						top: A ? f.top - u : s,
						left: f.left - d
					}, q = {
						top: A ? Math.min(l, e) / 2 + u : m
					}
			}
			return p.top += this.getOffsetTop(), p.left += this.getOffsetLeft(), {
				position: p,
				arrowOffset: q
			}
		}
	}, a.fn[e] = function(b, c) {
		var f = [],
			g = this.each(function() {
				var g = a.data(this, "plugin_" + e);
				g ? "destroy" === b ? g.destroy() : "string" == typeof b && f.push(g[b]()) : (b ? "string" == typeof b ?
					"destroy" !== b && (c || (g = new d(this, null), f.push(g[b]()))) : "object" == typeof b && (g = new d(this, b)) :
					g = new d(this, null), a.data(this, "plugin_" + e, g))
			});
		return f.length ? f : g
	}
}(jQuery, window, document);
/*webui-popover.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
$.components.register("webuiPopover", {
	mode: "default",
	defaults: {
		trigger: "click",
		width: 320,
		multi: !0,
		cloaseable: !1,
		style: "",
		delay: 300,
		padding: !0
	}
});
/*masonry.pkgd.min.js*/
/*!
 * Masonry PACKAGED v3.3.2
 * Cascading grid layout library
 * http://masonry.desandro.com
 * MIT License
 * by David DeSandro
 */

! function(a) {
	function b() {}

	function c(a) {
		function c(b) {
			b.prototype.option || (b.prototype.option = function(b) {
				a.isPlainObject(b) && (this.options = a.extend(!0, this.options, b))
			})
		}

		function e(b, c) {
			a.fn[b] = function(e) {
				if ("string" == typeof e) {
					for (var g = d.call(arguments, 1), h = 0, i = this.length; i > h; h++) {
						var j = this[h],
							k = a.data(j, b);
						if (k)
							if (a.isFunction(k[e]) && "_" !== e.charAt(0)) {
								var l = k[e].apply(k, g);
								if (void 0 !== l) return l
							} else f("no such method '" + e + "' for " + b + " instance");
						else f("cannot call methods on " + b + " prior to initialization; attempted to call '" + e + "'")
					}
					return this
				}
				return this.each(function() {
					var d = a.data(this, b);
					d ? (d.option(e), d._init()) : (d = new c(this, e), a.data(this, b, d))
				})
			}
		}
		if (a) {
			var f = "undefined" == typeof console ? b : function(a) {
				console.error(a)
			};
			return a.bridget = function(a, b) {
				c(b), e(a, b)
			}, a.bridget
		}
	}
	var d = Array.prototype.slice;
	"function" == typeof define && define.amd ? define("jquery-bridget/jquery.bridget", ["jquery"], c) : c("object" ==
		typeof exports ? require("jquery") : a.jQuery)
}(window),
function(a) {
	function b(b) {
		var c = a.event;
		return c.target = c.target || c.srcElement || b, c
	}
	var c = document.documentElement,
		d = function() {};
	c.addEventListener ? d = function(a, b, c) {
		a.addEventListener(b, c, !1)
	} : c.attachEvent && (d = function(a, c, d) {
		a[c + d] = d.handleEvent ? function() {
			var c = b(a);
			d.handleEvent.call(d, c)
		} : function() {
			var c = b(a);
			d.call(a, c)
		}, a.attachEvent("on" + c, a[c + d])
	});
	var e = function() {};
	c.removeEventListener ? e = function(a, b, c) {
		a.removeEventListener(b, c, !1)
	} : c.detachEvent && (e = function(a, b, c) {
		a.detachEvent("on" + b, a[b + c]);
		try {
			delete a[b + c]
		} catch (d) {
			a[b + c] = void 0
		}
	});
	var f = {
		bind: d,
		unbind: e
	};
	"function" == typeof define && define.amd ? define("eventie/eventie", f) : "object" == typeof exports ? module.exports =
		f : a.eventie = f
}(window),
function() {
	function a() {}

	function b(a, b) {
		for (var c = a.length; c--;)
			if (a[c].listener === b) return c;
		return -1
	}

	function c(a) {
		return function() {
			return this[a].apply(this, arguments)
		}
	}
	var d = a.prototype,
		e = this,
		f = e.EventEmitter;
	d.getListeners = function(a) {
		var b, c, d = this._getEvents();
		if (a instanceof RegExp) {
			b = {};
			for (c in d) d.hasOwnProperty(c) && a.test(c) && (b[c] = d[c])
		} else b = d[a] || (d[a] = []);
		return b
	}, d.flattenListeners = function(a) {
		var b, c = [];
		for (b = 0; b < a.length; b += 1) c.push(a[b].listener);
		return c
	}, d.getListenersAsObject = function(a) {
		var b, c = this.getListeners(a);
		return c instanceof Array && (b = {}, b[a] = c), b || c
	}, d.addListener = function(a, c) {
		var d, e = this.getListenersAsObject(a),
			f = "object" == typeof c;
		for (d in e) e.hasOwnProperty(d) && -1 === b(e[d], c) && e[d].push(f ? c : {
			listener: c,
			once: !1
		});
		return this
	}, d.on = c("addListener"), d.addOnceListener = function(a, b) {
		return this.addListener(a, {
			listener: b,
			once: !0
		})
	}, d.once = c("addOnceListener"), d.defineEvent = function(a) {
		return this.getListeners(a), this
	}, d.defineEvents = function(a) {
		for (var b = 0; b < a.length; b += 1) this.defineEvent(a[b]);
		return this
	}, d.removeListener = function(a, c) {
		var d, e, f = this.getListenersAsObject(a);
		for (e in f) f.hasOwnProperty(e) && (d = b(f[e], c), -1 !== d && f[e].splice(d, 1));
		return this
	}, d.off = c("removeListener"), d.addListeners = function(a, b) {
		return this.manipulateListeners(!1, a, b)
	}, d.removeListeners = function(a, b) {
		return this.manipulateListeners(!0, a, b)
	}, d.manipulateListeners = function(a, b, c) {
		var d, e, f = a ? this.removeListener : this.addListener,
			g = a ? this.removeListeners : this.addListeners;
		if ("object" != typeof b || b instanceof RegExp)
			for (d = c.length; d--;) f.call(this, b, c[d]);
		else
			for (d in b) b.hasOwnProperty(d) && (e = b[d]) && ("function" == typeof e ? f.call(this, d, e) : g.call(this, d, e));
		return this
	}, d.removeEvent = function(a) {
		var b, c = typeof a,
			d = this._getEvents();
		if ("string" === c) delete d[a];
		else if (a instanceof RegExp)
			for (b in d) d.hasOwnProperty(b) && a.test(b) && delete d[b];
		else delete this._events;
		return this
	}, d.removeAllListeners = c("removeEvent"), d.emitEvent = function(a, b) {
		var c, d, e, f, g = this.getListenersAsObject(a);
		for (e in g)
			if (g.hasOwnProperty(e))
				for (d = g[e].length; d--;) c = g[e][d], c.once === !0 && this.removeListener(a, c.listener), f = c.listener.apply(
					this, b || []), f === this._getOnceReturnValue() && this.removeListener(a, c.listener);
		return this
	}, d.trigger = c("emitEvent"), d.emit = function(a) {
		var b = Array.prototype.slice.call(arguments, 1);
		return this.emitEvent(a, b)
	}, d.setOnceReturnValue = function(a) {
		return this._onceReturnValue = a, this
	}, d._getOnceReturnValue = function() {
		return this.hasOwnProperty("_onceReturnValue") ? this._onceReturnValue : !0
	}, d._getEvents = function() {
		return this._events || (this._events = {})
	}, a.noConflict = function() {
		return e.EventEmitter = f, a
	}, "function" == typeof define && define.amd ? define("eventEmitter/EventEmitter", [], function() {
		return a
	}) : "object" == typeof module && module.exports ? module.exports = a : e.EventEmitter = a
}.call(this),
	function(a) {
		function b(a) {
			if (a) {
				if ("string" == typeof d[a]) return a;
				a = a.charAt(0).toUpperCase() + a.slice(1);
				for (var b, e = 0, f = c.length; f > e; e++)
					if (b = c[e] + a, "string" == typeof d[b]) return b
			}
		}
		var c = "Webkit Moz ms Ms O".split(" "),
			d = document.documentElement.style;
		"function" == typeof define && define.amd ? define("get-style-property/get-style-property", [], function() {
			return b
		}) : "object" == typeof exports ? module.exports = b : a.getStyleProperty = b
	}(window),
	function(a) {
		function b(a) {
			var b = parseFloat(a),
				c = -1 === a.indexOf("%") && !isNaN(b);
			return c && b
		}

		function c() {}

		function d() {
			for (var a = {
					width: 0,
					height: 0,
					innerWidth: 0,
					innerHeight: 0,
					outerWidth: 0,
					outerHeight: 0
				}, b = 0, c = g.length; c > b; b++) {
				var d = g[b];
				a[d] = 0
			}
			return a
		}

		function e(c) {
			function e() {
				if (!m) {
					m = !0;
					var d = a.getComputedStyle;
					if (j = function() {
							var a = d ? function(a) {
								return d(a, null)
							} : function(a) {
								return a.currentStyle
							};
							return function(b) {
								var c = a(b);
								return c || f("Style returned " + c +
									". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"), c
							}
						}(), k = c("boxSizing")) {
						var e = document.createElement("div");
						e.style.width = "200px", e.style.padding = "1px 2px 3px 4px", e.style.borderStyle = "solid", e.style.borderWidth =
							"1px 2px 3px 4px", e.style[k] = "border-box";
						var g = document.body || document.documentElement;
						g.appendChild(e);
						var h = j(e);
						l = 200 === b(h.width), g.removeChild(e)
					}
				}
			}

			function h(a) {
				if (e(), "string" == typeof a && (a = document.querySelector(a)), a && "object" == typeof a && a.nodeType) {
					var c = j(a);
					if ("none" === c.display) return d();
					var f = {};
					f.width = a.offsetWidth, f.height = a.offsetHeight;
					for (var h = f.isBorderBox = !(!k || !c[k] || "border-box" !== c[k]), m = 0, n = g.length; n > m; m++) {
						var o = g[m],
							p = c[o];
						p = i(a, p);
						var q = parseFloat(p);
						f[o] = isNaN(q) ? 0 : q
					}
					var r = f.paddingLeft + f.paddingRight,
						s = f.paddingTop + f.paddingBottom,
						t = f.marginLeft + f.marginRight,
						u = f.marginTop + f.marginBottom,
						v = f.borderLeftWidth + f.borderRightWidth,
						w = f.borderTopWidth + f.borderBottomWidth,
						x = h && l,
						y = b(c.width);
					y !== !1 && (f.width = y + (x ? 0 : r + v));
					var z = b(c.height);
					return z !== !1 && (f.height = z + (x ? 0 : s + w)), f.innerWidth = f.width - (r + v), f.innerHeight = f.height -
						(s + w), f.outerWidth = f.width + t, f.outerHeight = f.height + u, f
				}
			}

			function i(b, c) {
				if (a.getComputedStyle || -1 === c.indexOf("%")) return c;
				var d = b.style,
					e = d.left,
					f = b.runtimeStyle,
					g = f && f.left;
				return g && (f.left = b.currentStyle.left), d.left = c, c = d.pixelLeft, d.left = e, g && (f.left = g), c
			}
			var j, k, l, m = !1;
			return h
		}
		var f = "undefined" == typeof console ? c : function(a) {
				console.error(a)
			},
			g = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop",
				"marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"
			];
		"function" == typeof define && define.amd ? define("get-size/get-size", ["get-style-property/get-style-property"], e) :
			"object" == typeof exports ? module.exports = e(require("desandro-get-style-property")) : a.getSize = e(a.getStyleProperty)
	}(window),
	function(a) {
		function b(a) {
			"function" == typeof a && (b.isReady ? a() : g.push(a))
		}

		function c(a) {
			var c = "readystatechange" === a.type && "complete" !== f.readyState;
			b.isReady || c || d()
		}

		function d() {
			b.isReady = !0;
			for (var a = 0, c = g.length; c > a; a++) {
				var d = g[a];
				d()
			}
		}

		function e(e) {
			return "complete" === f.readyState ? d() : (e.bind(f, "DOMContentLoaded", c), e.bind(f, "readystatechange", c), e.bind(
				a, "load", c)), b
		}
		var f = a.document,
			g = [];
		b.isReady = !1, "function" == typeof define && define.amd ? define("doc-ready/doc-ready", ["eventie/eventie"], e) :
			"object" == typeof exports ? module.exports = e(require("eventie")) : a.docReady = e(a.eventie)
	}(window),
	function(a) {
		function b(a, b) {
			return a[g](b)
		}

		function c(a) {
			if (!a.parentNode) {
				var b = document.createDocumentFragment();
				b.appendChild(a)
			}
		}

		function d(a, b) {
			c(a);
			for (var d = a.parentNode.querySelectorAll(b), e = 0, f = d.length; f > e; e++)
				if (d[e] === a) return !0;
			return !1
		}

		function e(a, d) {
			return c(a), b(a, d)
		}
		var f, g = function() {
			if (a.matches) return "matches";
			if (a.matchesSelector) return "matchesSelector";
			for (var b = ["webkit", "moz", "ms", "o"], c = 0, d = b.length; d > c; c++) {
				var e = b[c],
					f = e + "MatchesSelector";
				if (a[f]) return f
			}
		}();
		if (g) {
			var h = document.createElement("div"),
				i = b(h, "div");
			f = i ? b : e
		} else f = d;
		"function" == typeof define && define.amd ? define("matches-selector/matches-selector", [], function() {
			return f
		}) : "object" == typeof exports ? module.exports = f : window.matchesSelector = f
	}(Element.prototype),
	function(a, b) {
		"function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["doc-ready/doc-ready",
				"matches-selector/matches-selector"
			], function(c, d) {
				return b(a, c, d)
			}) : "object" == typeof exports ? module.exports = b(a, require("doc-ready"), require("desandro-matches-selector")) :
			a.fizzyUIUtils = b(a, a.docReady, a.matchesSelector)
	}(window, function(a, b, c) {
		var d = {};
		d.extend = function(a, b) {
			for (var c in b) a[c] = b[c];
			return a
		}, d.modulo = function(a, b) {
			return (a % b + b) % b
		};
		var e = Object.prototype.toString;
		d.isArray = function(a) {
			return "[object Array]" == e.call(a)
		}, d.makeArray = function(a) {
			var b = [];
			if (d.isArray(a)) b = a;
			else if (a && "number" == typeof a.length)
				for (var c = 0, e = a.length; e > c; c++) b.push(a[c]);
			else b.push(a);
			return b
		}, d.indexOf = Array.prototype.indexOf ? function(a, b) {
			return a.indexOf(b)
		} : function(a, b) {
			for (var c = 0, d = a.length; d > c; c++)
				if (a[c] === b) return c;
			return -1
		}, d.removeFrom = function(a, b) {
			var c = d.indexOf(a, b); - 1 != c && a.splice(c, 1)
		}, d.isElement = "function" == typeof HTMLElement || "object" == typeof HTMLElement ? function(a) {
			return a instanceof HTMLElement
		} : function(a) {
			return a && "object" == typeof a && 1 == a.nodeType && "string" == typeof a.nodeName
		}, d.setText = function() {
			function a(a, c) {
				b = b || (void 0 !== document.documentElement.textContent ? "textContent" : "innerText"), a[b] = c
			}
			var b;
			return a
		}(), d.getParent = function(a, b) {
			for (; a != document.body;)
				if (a = a.parentNode, c(a, b)) return a
		}, d.getQueryElement = function(a) {
			return "string" == typeof a ? document.querySelector(a) : a
		}, d.handleEvent = function(a) {
			var b = "on" + a.type;
			this[b] && this[b](a)
		}, d.filterFindElements = function(a, b) {
			a = d.makeArray(a);
			for (var e = [], f = 0, g = a.length; g > f; f++) {
				var h = a[f];
				if (d.isElement(h))
					if (b) {
						c(h, b) && e.push(h);
						for (var i = h.querySelectorAll(b), j = 0, k = i.length; k > j; j++) e.push(i[j])
					} else e.push(h)
			}
			return e
		}, d.debounceMethod = function(a, b, c) {
			var d = a.prototype[b],
				e = b + "Timeout";
			a.prototype[b] = function() {
				var a = this[e];
				a && clearTimeout(a);
				var b = arguments,
					f = this;
				this[e] = setTimeout(function() {
					d.apply(f, b), delete f[e]
				}, c || 100)
			}
		}, d.toDashed = function(a) {
			return a.replace(/(.)([A-Z])/g, function(a, b, c) {
				return b + "-" + c
			}).toLowerCase()
		};
		var f = a.console;
		return d.htmlInit = function(c, e) {
			b(function() {
				for (var b = d.toDashed(e), g = document.querySelectorAll(".js-" + b), h = "data-" + b + "-options", i = 0, j =
						g.length; j > i; i++) {
					var k, l = g[i],
						m = l.getAttribute(h);
					try {
						k = m && JSON.parse(m)
					} catch (n) {
						f && f.error("Error parsing " + h + " on " + l.nodeName.toLowerCase() + (l.id ? "#" + l.id : "") + ": " + n);
						continue
					}
					var o = new c(l, k),
						p = a.jQuery;
					p && p.data(l, e, o)
				}
			})
		}, d
	}),
	function(a, b) {
		"function" == typeof define && define.amd ? define("outlayer/item", ["eventEmitter/EventEmitter", "get-size/get-size",
			"get-style-property/get-style-property", "fizzy-ui-utils/utils"
		], function(c, d, e, f) {
			return b(a, c, d, e, f)
		}) : "object" == typeof exports ? module.exports = b(a, require("wolfy87-eventemitter"), require("get-size"),
			require("desandro-get-style-property"), require("fizzy-ui-utils")) : (a.Outlayer = {}, a.Outlayer.Item = b(a, a.EventEmitter,
			a.getSize, a.getStyleProperty, a.fizzyUIUtils))
	}(window, function(a, b, c, d, e) {
		function f(a) {
			for (var b in a) return !1;
			return b = null, !0
		}

		function g(a, b) {
			a && (this.element = a, this.layout = b, this.position = {
				x: 0,
				y: 0
			}, this._create())
		}

		function h(a) {
			return a.replace(/([A-Z])/g, function(a) {
				return "-" + a.toLowerCase()
			})
		}
		var i = a.getComputedStyle,
			j = i ? function(a) {
				return i(a, null)
			} : function(a) {
				return a.currentStyle
			},
			k = d("transition"),
			l = d("transform"),
			m = k && l,
			n = !!d("perspective"),
			o = {
				WebkitTransition: "webkitTransitionEnd",
				MozTransition: "transitionend",
				OTransition: "otransitionend",
				transition: "transitionend"
			} [k],
			p = ["transform", "transition", "transitionDuration", "transitionProperty"],
			q = function() {
				for (var a = {}, b = 0, c = p.length; c > b; b++) {
					var e = p[b],
						f = d(e);
					f && f !== e && (a[e] = f)
				}
				return a
			}();
		e.extend(g.prototype, b.prototype), g.prototype._create = function() {
			this._transn = {
				ingProperties: {},
				clean: {},
				onEnd: {}
			}, this.css({
				position: "absolute"
			})
		}, g.prototype.handleEvent = function(a) {
			var b = "on" + a.type;
			this[b] && this[b](a)
		}, g.prototype.getSize = function() {
			this.size = c(this.element)
		}, g.prototype.css = function(a) {
			var b = this.element.style;
			for (var c in a) {
				var d = q[c] || c;
				b[d] = a[c]
			}
		}, g.prototype.getPosition = function() {
			var a = j(this.element),
				b = this.layout.options,
				c = b.isOriginLeft,
				d = b.isOriginTop,
				e = a[c ? "left" : "right"],
				f = a[d ? "top" : "bottom"],
				g = this.layout.size,
				h = -1 != e.indexOf("%") ? parseFloat(e) / 100 * g.width : parseInt(e, 10),
				i = -1 != f.indexOf("%") ? parseFloat(f) / 100 * g.height : parseInt(f, 10);
			h = isNaN(h) ? 0 : h, i = isNaN(i) ? 0 : i, h -= c ? g.paddingLeft : g.paddingRight, i -= d ? g.paddingTop : g.paddingBottom,
				this.position.x = h, this.position.y = i
		}, g.prototype.layoutPosition = function() {
			var a = this.layout.size,
				b = this.layout.options,
				c = {},
				d = b.isOriginLeft ? "paddingLeft" : "paddingRight",
				e = b.isOriginLeft ? "left" : "right",
				f = b.isOriginLeft ? "right" : "left",
				g = this.position.x + a[d];
			c[e] = this.getXValue(g), c[f] = "";
			var h = b.isOriginTop ? "paddingTop" : "paddingBottom",
				i = b.isOriginTop ? "top" : "bottom",
				j = b.isOriginTop ? "bottom" : "top",
				k = this.position.y + a[h];
			c[i] = this.getYValue(k), c[j] = "", this.css(c), this.emitEvent("layout", [this])
		}, g.prototype.getXValue = function(a) {
			var b = this.layout.options;
			return b.percentPosition && !b.isHorizontal ? a / this.layout.size.width * 100 + "%" : a + "px"
		}, g.prototype.getYValue = function(a) {
			var b = this.layout.options;
			return b.percentPosition && b.isHorizontal ? a / this.layout.size.height * 100 + "%" : a + "px"
		}, g.prototype._transitionTo = function(a, b) {
			this.getPosition();
			var c = this.position.x,
				d = this.position.y,
				e = parseInt(a, 10),
				f = parseInt(b, 10),
				g = e === this.position.x && f === this.position.y;
			if (this.setPosition(a, b), g && !this.isTransitioning) return void this.layoutPosition();
			var h = a - c,
				i = b - d,
				j = {};
			j.transform = this.getTranslate(h, i), this.transition({
				to: j,
				onTransitionEnd: {
					transform: this.layoutPosition
				},
				isCleaning: !0
			})
		}, g.prototype.getTranslate = function(a, b) {
			var c = this.layout.options;
			return a = c.isOriginLeft ? a : -a, b = c.isOriginTop ? b : -b, n ? "translate3d(" + a + "px, " + b + "px, 0)" :
				"translate(" + a + "px, " + b + "px)"
		}, g.prototype.goTo = function(a, b) {
			this.setPosition(a, b), this.layoutPosition()
		}, g.prototype.moveTo = m ? g.prototype._transitionTo : g.prototype.goTo, g.prototype.setPosition = function(a, b) {
			this.position.x = parseInt(a, 10), this.position.y = parseInt(b, 10)
		}, g.prototype._nonTransition = function(a) {
			this.css(a.to), a.isCleaning && this._removeStyles(a.to);
			for (var b in a.onTransitionEnd) a.onTransitionEnd[b].call(this)
		}, g.prototype._transition = function(a) {
			if (!parseFloat(this.layout.options.transitionDuration)) return void this._nonTransition(a);
			var b = this._transn;
			for (var c in a.onTransitionEnd) b.onEnd[c] = a.onTransitionEnd[c];
			for (c in a.to) b.ingProperties[c] = !0, a.isCleaning && (b.clean[c] = !0);
			if (a.from) {
				this.css(a.from);
				var d = this.element.offsetHeight;
				d = null
			}
			this.enableTransition(a.to), this.css(a.to), this.isTransitioning = !0
		};
		var r = "opacity," + h(q.transform || "transform");
		g.prototype.enableTransition = function() {
				this.isTransitioning || (this.css({
					transitionProperty: r,
					transitionDuration: this.layout.options.transitionDuration
				}), this.element.addEventListener(o, this, !1))
			}, g.prototype.transition = g.prototype[k ? "_transition" : "_nonTransition"], g.prototype.onwebkitTransitionEnd =
			function(a) {
				this.ontransitionend(a)
			}, g.prototype.onotransitionend = function(a) {
				this.ontransitionend(a)
			};
		var s = {
			"-webkit-transform": "transform",
			"-moz-transform": "transform",
			"-o-transform": "transform"
		};
		g.prototype.ontransitionend = function(a) {
			if (a.target === this.element) {
				var b = this._transn,
					c = s[a.propertyName] || a.propertyName;
				if (delete b.ingProperties[c], f(b.ingProperties) && this.disableTransition(), c in b.clean && (this.element.style[
						a.propertyName] = "", delete b.clean[c]), c in b.onEnd) {
					var d = b.onEnd[c];
					d.call(this), delete b.onEnd[c]
				}
				this.emitEvent("transitionEnd", [this])
			}
		}, g.prototype.disableTransition = function() {
			this.removeTransitionStyles(), this.element.removeEventListener(o, this, !1), this.isTransitioning = !1
		}, g.prototype._removeStyles = function(a) {
			var b = {};
			for (var c in a) b[c] = "";
			this.css(b)
		};
		var t = {
			transitionProperty: "",
			transitionDuration: ""
		};
		return g.prototype.removeTransitionStyles = function() {
			this.css(t)
		}, g.prototype.removeElem = function() {
			this.element.parentNode.removeChild(this.element), this.css({
				display: ""
			}), this.emitEvent("remove", [this])
		}, g.prototype.remove = function() {
			if (!k || !parseFloat(this.layout.options.transitionDuration)) return void this.removeElem();
			var a = this;
			this.once("transitionEnd", function() {
				a.removeElem()
			}), this.hide()
		}, g.prototype.reveal = function() {
			delete this.isHidden, this.css({
				display: ""
			});
			var a = this.layout.options,
				b = {},
				c = this.getHideRevealTransitionEndProperty("visibleStyle");
			b[c] = this.onRevealTransitionEnd, this.transition({
				from: a.hiddenStyle,
				to: a.visibleStyle,
				isCleaning: !0,
				onTransitionEnd: b
			})
		}, g.prototype.onRevealTransitionEnd = function() {
			this.isHidden || this.emitEvent("reveal")
		}, g.prototype.getHideRevealTransitionEndProperty = function(a) {
			var b = this.layout.options[a];
			if (b.opacity) return "opacity";
			for (var c in b) return c
		}, g.prototype.hide = function() {
			this.isHidden = !0, this.css({
				display: ""
			});
			var a = this.layout.options,
				b = {},
				c = this.getHideRevealTransitionEndProperty("hiddenStyle");
			b[c] = this.onHideTransitionEnd, this.transition({
				from: a.visibleStyle,
				to: a.hiddenStyle,
				isCleaning: !0,
				onTransitionEnd: b
			})
		}, g.prototype.onHideTransitionEnd = function() {
			this.isHidden && (this.css({
				display: "none"
			}), this.emitEvent("hide"))
		}, g.prototype.destroy = function() {
			this.css({
				position: "",
				left: "",
				right: "",
				top: "",
				bottom: "",
				transition: "",
				transform: ""
			})
		}, g
	}),
	function(a, b) {
		"function" == typeof define && define.amd ? define("outlayer/outlayer", ["eventie/eventie",
			"eventEmitter/EventEmitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"
		], function(c, d, e, f, g) {
			return b(a, c, d, e, f, g)
		}) : "object" == typeof exports ? module.exports = b(a, require("eventie"), require("wolfy87-eventemitter"), require(
			"get-size"), require("fizzy-ui-utils"), require("./item")) : a.Outlayer = b(a, a.eventie, a.EventEmitter, a.getSize,
			a.fizzyUIUtils, a.Outlayer.Item)
	}(window, function(a, b, c, d, e, f) {
		function g(a, b) {
			var c = e.getQueryElement(a);
			if (!c) return void(h && h.error("Bad element for " + this.constructor.namespace + ": " + (c || a)));
			this.element = c, i && (this.$element = i(this.element)), this.options = e.extend({}, this.constructor.defaults),
				this.option(b);
			var d = ++k;
			this.element.outlayerGUID = d, l[d] = this, this._create(), this.options.isInitLayout && this.layout()
		}
		var h = a.console,
			i = a.jQuery,
			j = function() {},
			k = 0,
			l = {};
		return g.namespace = "outlayer", g.Item = f, g.defaults = {
			containerStyle: {
				position: "relative"
			},
			isInitLayout: !0,
			isOriginLeft: !0,
			isOriginTop: !0,
			isResizeBound: !0,
			isResizingContainer: !0,
			transitionDuration: "0.4s",
			hiddenStyle: {
				opacity: 0,
				transform: "scale(0.001)"
			},
			visibleStyle: {
				opacity: 1,
				transform: "scale(1)"
			}
		}, e.extend(g.prototype, c.prototype), g.prototype.option = function(a) {
			e.extend(this.options, a)
		}, g.prototype._create = function() {
			this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), e.extend(this.element.style, this.options.containerStyle),
				this.options.isResizeBound && this.bindResize()
		}, g.prototype.reloadItems = function() {
			this.items = this._itemize(this.element.children)
		}, g.prototype._itemize = function(a) {
			for (var b = this._filterFindItemElements(a), c = this.constructor.Item, d = [], e = 0, f = b.length; f > e; e++) {
				var g = b[e],
					h = new c(g, this);
				d.push(h)
			}
			return d
		}, g.prototype._filterFindItemElements = function(a) {
			return e.filterFindElements(a, this.options.itemSelector)
		}, g.prototype.getItemElements = function() {
			for (var a = [], b = 0, c = this.items.length; c > b; b++) a.push(this.items[b].element);
			return a
		}, g.prototype.layout = function() {
			this._resetLayout(), this._manageStamps();
			var a = void 0 !== this.options.isLayoutInstant ? this.options.isLayoutInstant : !this._isLayoutInited;
			this.layoutItems(this.items, a), this._isLayoutInited = !0
		}, g.prototype._init = g.prototype.layout, g.prototype._resetLayout = function() {
			this.getSize()
		}, g.prototype.getSize = function() {
			this.size = d(this.element)
		}, g.prototype._getMeasurement = function(a, b) {
			var c, f = this.options[a];
			f ? ("string" == typeof f ? c = this.element.querySelector(f) : e.isElement(f) && (c = f), this[a] = c ? d(c)[b] :
				f) : this[a] = 0
		}, g.prototype.layoutItems = function(a, b) {
			a = this._getItemsForLayout(a), this._layoutItems(a, b), this._postLayout()
		}, g.prototype._getItemsForLayout = function(a) {
			for (var b = [], c = 0, d = a.length; d > c; c++) {
				var e = a[c];
				e.isIgnored || b.push(e)
			}
			return b
		}, g.prototype._layoutItems = function(a, b) {
			if (this._emitCompleteOnItems("layout", a), a && a.length) {
				for (var c = [], d = 0, e = a.length; e > d; d++) {
					var f = a[d],
						g = this._getItemLayoutPosition(f);
					g.item = f, g.isInstant = b || f.isLayoutInstant, c.push(g)
				}
				this._processLayoutQueue(c)
			}
		}, g.prototype._getItemLayoutPosition = function() {
			return {
				x: 0,
				y: 0
			}
		}, g.prototype._processLayoutQueue = function(a) {
			for (var b = 0, c = a.length; c > b; b++) {
				var d = a[b];
				this._positionItem(d.item, d.x, d.y, d.isInstant)
			}
		}, g.prototype._positionItem = function(a, b, c, d) {
			d ? a.goTo(b, c) : a.moveTo(b, c)
		}, g.prototype._postLayout = function() {
			this.resizeContainer()
		}, g.prototype.resizeContainer = function() {
			if (this.options.isResizingContainer) {
				var a = this._getContainerSize();
				a && (this._setContainerMeasure(a.width, !0), this._setContainerMeasure(a.height, !1))
			}
		}, g.prototype._getContainerSize = j, g.prototype._setContainerMeasure = function(a, b) {
			if (void 0 !== a) {
				var c = this.size;
				c.isBorderBox && (a += b ? c.paddingLeft + c.paddingRight + c.borderLeftWidth + c.borderRightWidth : c.paddingBottom +
					c.paddingTop + c.borderTopWidth + c.borderBottomWidth), a = Math.max(a, 0), this.element.style[b ? "width" :
					"height"] = a + "px"
			}
		}, g.prototype._emitCompleteOnItems = function(a, b) {
			function c() {
				e.dispatchEvent(a + "Complete", null, [b])
			}

			function d() {
				g++, g === f && c()
			}
			var e = this,
				f = b.length;
			if (!b || !f) return void c();
			for (var g = 0, h = 0, i = b.length; i > h; h++) {
				var j = b[h];
				j.once(a, d)
			}
		}, g.prototype.dispatchEvent = function(a, b, c) {
			var d = b ? [b].concat(c) : c;
			if (this.emitEvent(a, d), i)
				if (this.$element = this.$element || i(this.element), b) {
					var e = i.Event(b);
					e.type = a, this.$element.trigger(e, c)
				} else this.$element.trigger(a, c)
		}, g.prototype.ignore = function(a) {
			var b = this.getItem(a);
			b && (b.isIgnored = !0)
		}, g.prototype.unignore = function(a) {
			var b = this.getItem(a);
			b && delete b.isIgnored
		}, g.prototype.stamp = function(a) {
			if (a = this._find(a)) {
				this.stamps = this.stamps.concat(a);
				for (var b = 0, c = a.length; c > b; b++) {
					var d = a[b];
					this.ignore(d)
				}
			}
		}, g.prototype.unstamp = function(a) {
			if (a = this._find(a))
				for (var b = 0, c = a.length; c > b; b++) {
					var d = a[b];
					e.removeFrom(this.stamps, d), this.unignore(d)
				}
		}, g.prototype._find = function(a) {
			return a ? ("string" == typeof a && (a = this.element.querySelectorAll(a)), a = e.makeArray(a)) : void 0
		}, g.prototype._manageStamps = function() {
			if (this.stamps && this.stamps.length) {
				this._getBoundingRect();
				for (var a = 0, b = this.stamps.length; b > a; a++) {
					var c = this.stamps[a];
					this._manageStamp(c)
				}
			}
		}, g.prototype._getBoundingRect = function() {
			var a = this.element.getBoundingClientRect(),
				b = this.size;
			this._boundingRect = {
				left: a.left + b.paddingLeft + b.borderLeftWidth,
				top: a.top + b.paddingTop + b.borderTopWidth,
				right: a.right - (b.paddingRight + b.borderRightWidth),
				bottom: a.bottom - (b.paddingBottom + b.borderBottomWidth)
			}
		}, g.prototype._manageStamp = j, g.prototype._getElementOffset = function(a) {
			var b = a.getBoundingClientRect(),
				c = this._boundingRect,
				e = d(a),
				f = {
					left: b.left - c.left - e.marginLeft,
					top: b.top - c.top - e.marginTop,
					right: c.right - b.right - e.marginRight,
					bottom: c.bottom - b.bottom - e.marginBottom
				};
			return f
		}, g.prototype.handleEvent = function(a) {
			var b = "on" + a.type;
			this[b] && this[b](a)
		}, g.prototype.bindResize = function() {
			this.isResizeBound || (b.bind(a, "resize", this), this.isResizeBound = !0)
		}, g.prototype.unbindResize = function() {
			this.isResizeBound && b.unbind(a, "resize", this), this.isResizeBound = !1
		}, g.prototype.onresize = function() {
			function a() {
				b.resize(), delete b.resizeTimeout
			}
			this.resizeTimeout && clearTimeout(this.resizeTimeout);
			var b = this;
			this.resizeTimeout = setTimeout(a, 100)
		}, g.prototype.resize = function() {
			this.isResizeBound && this.needsResizeLayout() && this.layout()
		}, g.prototype.needsResizeLayout = function() {
			var a = d(this.element),
				b = this.size && a;
			return b && a.innerWidth !== this.size.innerWidth
		}, g.prototype.addItems = function(a) {
			var b = this._itemize(a);
			return b.length && (this.items = this.items.concat(b)), b
		}, g.prototype.appended = function(a) {
			var b = this.addItems(a);
			b.length && (this.layoutItems(b, !0), this.reveal(b))
		}, g.prototype.prepended = function(a) {
			var b = this._itemize(a);
			if (b.length) {
				var c = this.items.slice(0);
				this.items = b.concat(c), this._resetLayout(), this._manageStamps(), this.layoutItems(b, !0), this.reveal(b),
					this.layoutItems(c)
			}
		}, g.prototype.reveal = function(a) {
			this._emitCompleteOnItems("reveal", a);
			for (var b = a && a.length, c = 0; b && b > c; c++) {
				var d = a[c];
				d.reveal()
			}
		}, g.prototype.hide = function(a) {
			this._emitCompleteOnItems("hide", a);
			for (var b = a && a.length, c = 0; b && b > c; c++) {
				var d = a[c];
				d.hide()
			}
		}, g.prototype.revealItemElements = function(a) {
			var b = this.getItems(a);
			this.reveal(b)
		}, g.prototype.hideItemElements = function(a) {
			var b = this.getItems(a);
			this.hide(b)
		}, g.prototype.getItem = function(a) {
			for (var b = 0, c = this.items.length; c > b; b++) {
				var d = this.items[b];
				if (d.element === a) return d
			}
		}, g.prototype.getItems = function(a) {
			a = e.makeArray(a);
			for (var b = [], c = 0, d = a.length; d > c; c++) {
				var f = a[c],
					g = this.getItem(f);
				g && b.push(g)
			}
			return b
		}, g.prototype.remove = function(a) {
			var b = this.getItems(a);
			if (this._emitCompleteOnItems("remove", b), b && b.length)
				for (var c = 0, d = b.length; d > c; c++) {
					var f = b[c];
					f.remove(), e.removeFrom(this.items, f)
				}
		}, g.prototype.destroy = function() {
			var a = this.element.style;
			a.height = "", a.position = "", a.width = "";
			for (var b = 0, c = this.items.length; c > b; b++) {
				var d = this.items[b];
				d.destroy()
			}
			this.unbindResize();
			var e = this.element.outlayerGUID;
			delete l[e], delete this.element.outlayerGUID, i && i.removeData(this.element, this.constructor.namespace)
		}, g.data = function(a) {
			a = e.getQueryElement(a);
			var b = a && a.outlayerGUID;
			return b && l[b]
		}, g.create = function(a, b) {
			function c() {
				g.apply(this, arguments)
			}
			return Object.create ? c.prototype = Object.create(g.prototype) : e.extend(c.prototype, g.prototype), c.prototype.constructor =
				c, c.defaults = e.extend({}, g.defaults), e.extend(c.defaults, b), c.prototype.settings = {}, c.namespace = a, c.data =
				g.data, c.Item = function() {
					f.apply(this, arguments)
				}, c.Item.prototype = new f, e.htmlInit(c, a), i && i.bridget && i.bridget(a, c), c
		}, g.Item = f, g
	}),
	function(a, b) {
		"function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size", "fizzy-ui-utils/utils"],
			b) : "object" == typeof exports ? module.exports = b(require("outlayer"), require("get-size"), require(
			"fizzy-ui-utils")) : a.Masonry = b(a.Outlayer, a.getSize, a.fizzyUIUtils)
	}(window, function(a, b, c) {
		var d = a.create("masonry");
		return d.prototype._resetLayout = function() {
			this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"),
				this.measureColumns();
			var a = this.cols;
			for (this.colYs = []; a--;) this.colYs.push(0);
			this.maxY = 0
		}, d.prototype.measureColumns = function() {
			if (this.getContainerWidth(), !this.columnWidth) {
				var a = this.items[0],
					c = a && a.element;
				this.columnWidth = c && b(c).outerWidth || this.containerWidth
			}
			var d = this.columnWidth += this.gutter,
				e = this.containerWidth + this.gutter,
				f = e / d,
				g = d - e % d,
				h = g && 1 > g ? "round" : "floor";
			f = Math[h](f), this.cols = Math.max(f, 1)
		}, d.prototype.getContainerWidth = function() {
			var a = this.options.isFitWidth ? this.element.parentNode : this.element,
				c = b(a);
			this.containerWidth = c && c.innerWidth
		}, d.prototype._getItemLayoutPosition = function(a) {
			a.getSize();
			var b = a.size.outerWidth % this.columnWidth,
				d = b && 1 > b ? "round" : "ceil",
				e = Math[d](a.size.outerWidth / this.columnWidth);
			e = Math.min(e, this.cols);
			for (var f = this._getColGroup(e), g = Math.min.apply(Math, f), h = c.indexOf(f, g), i = {
					x: this.columnWidth * h,
					y: g
				}, j = g + a.size.outerHeight, k = this.cols + 1 - f.length, l = 0; k > l; l++) this.colYs[h + l] = j;
			return i
		}, d.prototype._getColGroup = function(a) {
			if (2 > a) return this.colYs;
			for (var b = [], c = this.cols + 1 - a, d = 0; c > d; d++) {
				var e = this.colYs.slice(d, d + a);
				b[d] = Math.max.apply(Math, e)
			}
			return b
		}, d.prototype._manageStamp = function(a) {
			var c = b(a),
				d = this._getElementOffset(a),
				e = this.options.isOriginLeft ? d.left : d.right,
				f = e + c.outerWidth,
				g = Math.floor(e / this.columnWidth);
			g = Math.max(0, g);
			var h = Math.floor(f / this.columnWidth);
			h -= f % this.columnWidth ? 0 : 1, h = Math.min(this.cols - 1, h);
			for (var i = (this.options.isOriginTop ? d.top : d.bottom) + c.outerHeight, j = g; h >= j; j++) this.colYs[j] =
				Math.max(i, this.colYs[j])
		}, d.prototype._getContainerSize = function() {
			this.maxY = Math.max.apply(Math, this.colYs);
			var a = {
				height: this.maxY
			};
			return this.options.isFitWidth && (a.width = this._getContainerFitWidth()), a
		}, d.prototype._getContainerFitWidth = function() {
			for (var a = 0, b = this.cols; --b && 0 === this.colYs[b];) a++;
			return (this.cols - a) * this.columnWidth - this.gutter
		}, d.prototype.needsResizeLayout = function() {
			var a = this.containerWidth;
			return this.getContainerWidth(), a !== this.containerWidth
		}, d
	});
/*masonry.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
$.components.register("masonry", {
	mode: "init",
	defaults: {
		itemSelector: ".masonry-item"
	},
	init: function(context) {
		if ("undefined" != typeof $.fn.masonry) {
			var defaults = $.components.getDefaults("masonry"),
				callback = function() {
					$('[data-plugin="masonry"]', context).each(function() {
						var $this = $(this),
							options = $.extend(!0, {}, defaults, $this.data());
						$this.masonry(options)
					})
				};
			context !== document ? callback() : $(window).on("load", function() {
				callback()
			})
		}
	}
});
/*jquery.bootstrap-touchspin.min.js*/
/*
 *  Bootstrap TouchSpin - v3.0.1
 *  A mobile and touch friendly input spinner component for Bootstrap 3.
 *  http://www.virtuosoft.eu/code/bootstrap-touchspin/
 *
 *  Made by István Ujj-Mészáros
 *  Under Apache License v2.0 License
 */
! function(a) {
	"use strict";

	function b(a, b) {
		return a + ".touchspin_" + b
	}

	function c(c, d) {
		return a.map(c, function(a) {
			return b(a, d)
		})
	}
	var d = 0;
	a.fn.TouchSpin = function(b) {
		if ("destroy" === b) return void this.each(function() {
			var b = a(this),
				d = b.data();
			a(document).off(c(["mouseup", "touchend", "touchcancel", "mousemove", "touchmove", "scroll", "scrollstart"], d.spinnerid)
				.join(" "))
		});
		var e = {
				min: 0,
				max: 100,
				initval: "",
				step: 1,
				decimals: 0,
				stepinterval: 100,
				forcestepdivisibility: "round",
				stepintervaldelay: 500,
				verticalbuttons: !1,
				verticalupclass: "glyphicon glyphicon-chevron-up",
				verticaldownclass: "glyphicon glyphicon-chevron-down",
				prefix: "",
				postfix: "",
				prefix_extraclass: "",
				postfix_extraclass: "",
				booster: !0,
				boostat: 10,
				maxboostedstep: !1,
				mousewheel: !0,
				buttondown_class: "btn btn-default",
				buttonup_class: "btn btn-default",
				buttondown_txt: "-",
				buttonup_txt: "+"
			},
			f = {
				min: "min",
				max: "max",
				initval: "init-val",
				step: "step",
				decimals: "decimals",
				stepinterval: "step-interval",
				verticalbuttons: "vertical-buttons",
				verticalupclass: "vertical-up-class",
				verticaldownclass: "vertical-down-class",
				forcestepdivisibility: "force-step-divisibility",
				stepintervaldelay: "step-interval-delay",
				prefix: "prefix",
				postfix: "postfix",
				prefix_extraclass: "prefix-extra-class",
				postfix_extraclass: "postfix-extra-class",
				booster: "booster",
				boostat: "boostat",
				maxboostedstep: "max-boosted-step",
				mousewheel: "mouse-wheel",
				buttondown_class: "button-down-class",
				buttonup_class: "button-up-class",
				buttondown_txt: "button-down-txt",
				buttonup_txt: "button-up-txt"
			};
		return this.each(function() {
			function g() {
				if (!J.data("alreadyinitialized")) {
					if (J.data("alreadyinitialized", !0), d += 1, J.data("spinnerid", d), !J.is("input")) return void console.log(
						"Must be an input.");
					j(), h(), u(), m(), p(), q(), r(), s(), D.input.css("display", "block")
				}
			}

			function h() {
				"" !== B.initval && "" === J.val() && J.val(B.initval)
			}

			function i(a) {
				l(a), u();
				var b = D.input.val();
				"" !== b && (b = Number(D.input.val()), D.input.val(b.toFixed(B.decimals)))
			}

			function j() {
				B = a.extend({}, e, K, k(), b)
			}

			function k() {
				var b = {};
				return a.each(f, function(a, c) {
					var d = "bts-" + c;
					J.is("[data-" + d + "]") && (b[a] = J.data(d))
				}), b
			}

			function l(b) {
				B = a.extend({}, B, b)
			}

			function m() {
				var a = J.val(),
					b = J.parent();
				"" !== a && (a = Number(a).toFixed(B.decimals)), J.data("initvalue", a).val(a), J.addClass("form-control"), b.hasClass(
					"input-group") ? n(b) : o()
			}

			function n(b) {
				b.addClass("bootstrap-touchspin");
				var c, d, e = J.prev(),
					f = J.next(),
					g = '<span class="input-group-addon bootstrap-touchspin-prefix">' + B.prefix + "</span>",
					h = '<span class="input-group-addon bootstrap-touchspin-postfix">' + B.postfix + "</span>";
				e.hasClass("input-group-btn") ? (c = '<button class="' + B.buttondown_class +
					' bootstrap-touchspin-down" type="button">' + B.buttondown_txt + "</button>", e.append(c)) : (c =
					'<span class="input-group-btn"><button class="' + B.buttondown_class +
					' bootstrap-touchspin-down" type="button">' + B.buttondown_txt + "</button></span>", a(c).insertBefore(J)), f.hasClass(
					"input-group-btn") ? (d = '<button class="' + B.buttonup_class + ' bootstrap-touchspin-up" type="button">' + B
					.buttonup_txt + "</button>", f.prepend(d)) : (d = '<span class="input-group-btn"><button class="' + B.buttonup_class +
					' bootstrap-touchspin-up" type="button">' + B.buttonup_txt + "</button></span>", a(d).insertAfter(J)), a(g).insertBefore(
					J), a(h).insertAfter(J), C = b
			}

			function o() {
				var b;
				b = B.verticalbuttons ?
					'<div class="input-group bootstrap-touchspin"><span class="input-group-addon bootstrap-touchspin-prefix">' + B.prefix +
					'</span><span class="input-group-addon bootstrap-touchspin-postfix">' + B.postfix +
					'</span><span class="input-group-btn-vertical"><button class="' + B.buttondown_class +
					' bootstrap-touchspin-up" type="button"><i class="' + B.verticalupclass + '"></i></button><button class="' + B.buttonup_class +
					' bootstrap-touchspin-down" type="button"><i class="' + B.verticaldownclass + '"></i></button></span></div>' :
					'<div class="input-group bootstrap-touchspin"><span class="input-group-btn"><button class="' + B.buttondown_class +
					' bootstrap-touchspin-down" type="button">' + B.buttondown_txt +
					'</button></span><span class="input-group-addon bootstrap-touchspin-prefix">' + B.prefix +
					'</span><span class="input-group-addon bootstrap-touchspin-postfix">' + B.postfix +
					'</span><span class="input-group-btn"><button class="' + B.buttonup_class +
					' bootstrap-touchspin-up" type="button">' + B.buttonup_txt + "</button></span></div>", C = a(b).insertBefore(J),
					a(".bootstrap-touchspin-prefix", C).after(J), J.hasClass("input-sm") ? C.addClass("input-group-sm") : J.hasClass(
						"input-lg") && C.addClass("input-group-lg")
			}

			function p() {
				D = {
					down: a(".bootstrap-touchspin-down", C),
					up: a(".bootstrap-touchspin-up", C),
					input: a("input", C),
					prefix: a(".bootstrap-touchspin-prefix", C).addClass(B.prefix_extraclass),
					postfix: a(".bootstrap-touchspin-postfix", C).addClass(B.postfix_extraclass)
				}
			}

			function q() {
				"" === B.prefix && D.prefix.hide(), "" === B.postfix && D.postfix.hide()
			}

			function r() {
				J.on("keydown", function(a) {
					var b = a.keyCode || a.which;
					38 === b ? ("up" !== M && (w(), z()), a.preventDefault()) : 40 === b && ("down" !== M && (x(), y()), a.preventDefault())
				}), J.on("keyup", function(a) {
					var b = a.keyCode || a.which;
					38 === b ? A() : 40 === b && A()
				}), J.on("blur", function() {
					u()
				}), D.down.on("keydown", function(a) {
					var b = a.keyCode || a.which;
					(32 === b || 13 === b) && ("down" !== M && (x(), y()), a.preventDefault())
				}), D.down.on("keyup", function(a) {
					var b = a.keyCode || a.which;
					(32 === b || 13 === b) && A()
				}), D.up.on("keydown", function(a) {
					var b = a.keyCode || a.which;
					(32 === b || 13 === b) && ("up" !== M && (w(), z()), a.preventDefault())
				}), D.up.on("keyup", function(a) {
					var b = a.keyCode || a.which;
					(32 === b || 13 === b) && A()
				}), D.down.on("mousedown.touchspin", function(a) {
					D.down.off("touchstart.touchspin"), J.is(":disabled") || (x(), y(), a.preventDefault(), a.stopPropagation())
				}), D.down.on("touchstart.touchspin", function(a) {
					D.down.off("mousedown.touchspin"), J.is(":disabled") || (x(), y(), a.preventDefault(), a.stopPropagation())
				}), D.up.on("mousedown.touchspin", function(a) {
					D.up.off("touchstart.touchspin"), J.is(":disabled") || (w(), z(), a.preventDefault(), a.stopPropagation())
				}), D.up.on("touchstart.touchspin", function(a) {
					D.up.off("mousedown.touchspin"), J.is(":disabled") || (w(), z(), a.preventDefault(), a.stopPropagation())
				}), D.up.on("mouseout touchleave touchend touchcancel", function(a) {
					M && (a.stopPropagation(), A())
				}), D.down.on("mouseout touchleave touchend touchcancel", function(a) {
					M && (a.stopPropagation(), A())
				}), D.down.on("mousemove touchmove", function(a) {
					M && (a.stopPropagation(), a.preventDefault())
				}), D.up.on("mousemove touchmove", function(a) {
					M && (a.stopPropagation(), a.preventDefault())
				}), a(document).on(c(["mouseup", "touchend", "touchcancel"], d).join(" "), function(a) {
					M && (a.preventDefault(), A())
				}), a(document).on(c(["mousemove", "touchmove", "scroll", "scrollstart"], d).join(" "), function(a) {
					M && (a.preventDefault(), A())
				}), J.on("mousewheel DOMMouseScroll", function(a) {
					if (B.mousewheel && J.is(":focus")) {
						var b = a.originalEvent.wheelDelta || -a.originalEvent.deltaY || -a.originalEvent.detail;
						a.stopPropagation(), a.preventDefault(), 0 > b ? x() : w()
					}
				})
			}

			function s() {
				J.on("touchspin.uponce", function() {
					A(), w()
				}), J.on("touchspin.downonce", function() {
					A(), x()
				}), J.on("touchspin.startupspin", function() {
					z()
				}), J.on("touchspin.startdownspin", function() {
					y()
				}), J.on("touchspin.stopspin", function() {
					A()
				}), J.on("touchspin.updatesettings", function(a, b) {
					i(b)
				})
			}

			function t(a) {
				switch (B.forcestepdivisibility) {
					case "round":
						return (Math.round(a / B.step) * B.step).toFixed(B.decimals);
					case "floor":
						return (Math.floor(a / B.step) * B.step).toFixed(B.decimals);
					case "ceil":
						return (Math.ceil(a / B.step) * B.step).toFixed(B.decimals);
					default:
						return a
				}
			}

			function u() {
				var a, b, c;
				a = J.val(), "" !== a && (B.decimals > 0 && "." === a || (b = parseFloat(a), isNaN(b) && (b = 0), c = b, b.toString() !==
					a && (c = b), b < B.min && (c = B.min), b > B.max && (c = B.max), c = t(c), Number(a).toString() !== c.toString() &&
					(J.val(c), J.trigger("change"))))
			}

			function v() {
				if (B.booster) {
					var a = Math.pow(2, Math.floor(L / B.boostat)) * B.step;
					return B.maxboostedstep && a > B.maxboostedstep && (a = B.maxboostedstep, E = Math.round(E / a) * a), Math.max(
						B.step, a)
				}
				return B.step
			}

			function w() {
				u(), E = parseFloat(D.input.val()), isNaN(E) && (E = 0);
				var a = E,
					b = v();
				E += b, E > B.max && (E = B.max, J.trigger("touchspin.on.max"), A()), D.input.val(Number(E).toFixed(B.decimals)),
					a !== E && J.trigger("change")
			}

			function x() {
				u(), E = parseFloat(D.input.val()), isNaN(E) && (E = 0);
				var a = E,
					b = v();
				E -= b, E < B.min && (E = B.min, J.trigger("touchspin.on.min"), A()), D.input.val(E.toFixed(B.decimals)), a !==
					E && J.trigger("change")
			}

			function y() {
				A(), L = 0, M = "down", J.trigger("touchspin.on.startspin"), J.trigger("touchspin.on.startdownspin"), H =
					setTimeout(function() {
						F = setInterval(function() {
							L++, x()
						}, B.stepinterval)
					}, B.stepintervaldelay)
			}

			function z() {
				A(), L = 0, M = "up", J.trigger("touchspin.on.startspin"), J.trigger("touchspin.on.startupspin"), I = setTimeout(
					function() {
						G = setInterval(function() {
							L++, w()
						}, B.stepinterval)
					}, B.stepintervaldelay)
			}

			function A() {
				switch (clearTimeout(H), clearTimeout(I), clearInterval(F), clearInterval(G), M) {
					case "up":
						J.trigger("touchspin.on.stopupspin"), J.trigger("touchspin.on.stopspin");
						break;
					case "down":
						J.trigger("touchspin.on.stopdownspin"), J.trigger("touchspin.on.stopspin")
				}
				L = 0, M = !1
			}
			var B, C, D, E, F, G, H, I, J = a(this),
				K = J.data(),
				L = 0,
				M = !1;
			g()
		})
	}
}(jQuery);
/*spin.min.js*/
(function(t, e) {
	"object" == typeof exports ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.Spinner =
		e()
})(this, function() {
	"use strict";

	function t(t, e) {
		var i, n = document.createElement(t || "div");
		for (i in e) n[i] = e[i];
		return n
	}

	function e(t) {
		for (var e = 1, i = arguments.length; i > e; e++) t.appendChild(arguments[e]);
		return t
	}

	function i(t, e, i, n) {
		var r = ["opacity", e, ~~(100 * t), i, n].join("-"),
			o = .01 + 100 * (i / n),
			a = Math.max(1 - (1 - t) / e * (100 - o), t),
			s = u.substring(0, u.indexOf("Animation")).toLowerCase(),
			l = s && "-" + s + "-" || "";
		return c[r] || (p.insertRule("@" + l + "keyframes " + r + "{" + "0%{opacity:" + a + "}" + o + "%{opacity:" + t + "}" +
			(o + .01) + "%{opacity:1}" + (o + e) % 100 + "%{opacity:" + t + "}" + "100%{opacity:" + a + "}" + "}", p.cssRules
			.length), c[r] = 1), r
	}

	function n(t, e) {
		var i, n, r = t.style;
		for (e = e.charAt(0).toUpperCase() + e.slice(1), n = 0; d.length > n; n++)
			if (i = d[n] + e, void 0 !== r[i]) return i;
		return void 0 !== r[e] ? e : void 0
	}

	function r(t, e) {
		for (var i in e) t.style[n(t, i) || i] = e[i];
		return t
	}

	function o(t) {
		for (var e = 1; arguments.length > e; e++) {
			var i = arguments[e];
			for (var n in i) void 0 === t[n] && (t[n] = i[n])
		}
		return t
	}

	function a(t, e) {
		return "string" == typeof t ? t : t[e % t.length]
	}

	function s(t) {
		this.opts = o(t || {}, s.defaults, f)
	}

	function l() {
		function i(e, i) {
			return t("<" + e + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', i)
		}
		p.addRule(".spin-vml", "behavior:url(#default#VML)"), s.prototype.lines = function(t, n) {
			function o() {
				return r(i("group", {
					coordsize: d + " " + d,
					coordorigin: -u + " " + -u
				}), {
					width: d,
					height: d
				})
			}

			function s(t, s, l) {
				e(p, e(r(o(), {
					rotation: 360 / n.lines * t + "deg",
					left: ~~s
				}), e(r(i("roundrect", {
					arcsize: n.corners
				}), {
					width: u,
					height: n.width,
					left: n.radius,
					top: -n.width >> 1,
					filter: l
				}), i("fill", {
					color: a(n.color, t),
					opacity: n.opacity
				}), i("stroke", {
					opacity: 0
				}))))
			}
			var l, u = n.length + n.width,
				d = 2 * u,
				c = 2 * -(n.width + n.length) + "px",
				p = r(o(), {
					position: "absolute",
					top: c,
					left: c
				});
			if (n.shadow)
				for (l = 1; n.lines >= l; l++) s(l, -2,
					"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");
			for (l = 1; n.lines >= l; l++) s(l);
			return e(t, p)
		}, s.prototype.opacity = function(t, e, i, n) {
			var r = t.firstChild;
			n = n.shadow && n.lines || 0, r && r.childNodes.length > e + n && (r = r.childNodes[e + n], r = r && r.firstChild,
				r = r && r.firstChild, r && (r.opacity = i))
		}
	}
	var u, d = ["webkit", "Moz", "ms", "O"],
		c = {},
		p = function() {
			var i = t("style", {
				type: "text/css"
			});
			return e(document.getElementsByTagName("head")[0], i), i.sheet || i.styleSheet
		}(),
		f = {
			lines: 12,
			length: 7,
			width: 5,
			radius: 10,
			rotate: 0,
			corners: 1,
			color: "#000",
			direction: 1,
			speed: 1,
			trail: 100,
			opacity: .25,
			fps: 20,
			zIndex: 2e9,
			className: "spinner",
			top: "50%",
			left: "50%",
			position: "absolute"
		};
	s.defaults = {}, o(s.prototype, {
		spin: function(e) {
			this.stop();
			var i = this,
				n = i.opts,
				o = i.el = r(t(0, {
					className: n.className
				}), {
					position: n.position,
					width: 0,
					zIndex: n.zIndex
				});
			if (n.radius + n.length + n.width, r(o, {
					left: n.left,
					top: n.top
				}), e && e.insertBefore(o, e.firstChild || null), o.setAttribute("role", "progressbar"), i.lines(o, i.opts), !u) {
				var a, s = 0,
					l = (n.lines - 1) * (1 - n.direction) / 2,
					d = n.fps,
					c = d / n.speed,
					p = (1 - n.opacity) / (c * n.trail / 100),
					f = c / n.lines;
				(function h() {
					s++;
					for (var t = 0; n.lines > t; t++) a = Math.max(1 - (s + (n.lines - t) * f) % c * p, n.opacity), i.opacity(o,
						t * n.direction + l, a, n);
					i.timeout = i.el && setTimeout(h, ~~(1e3 / d))
				})()
			}
			return i
		},
		stop: function() {
			var t = this.el;
			return t && (clearTimeout(this.timeout), t.parentNode && t.parentNode.removeChild(t), this.el = void 0), this
		},
		lines: function(n, o) {
			function s(e, i) {
				return r(t(), {
					position: "absolute",
					width: o.length + o.width + "px",
					height: o.width + "px",
					background: e,
					boxShadow: i,
					transformOrigin: "left",
					transform: "rotate(" + ~~(360 / o.lines * d + o.rotate) + "deg) translate(" + o.radius + "px" + ",0)",
					borderRadius: (o.corners * o.width >> 1) + "px"
				})
			}
			for (var l, d = 0, c = (o.lines - 1) * (1 - o.direction) / 2; o.lines > d; d++) l = r(t(), {
				position: "absolute",
				top: 1 + ~(o.width / 2) + "px",
				transform: o.hwaccel ? "translate3d(0,0,0)" : "",
				opacity: o.opacity,
				animation: u && i(o.opacity, o.trail, c + d * o.direction, o.lines) + " " + 1 / o.speed + "s linear infinite"
			}), o.shadow && e(l, r(s("#000", "0 0 4px #000"), {
				top: "2px"
			})), e(n, e(l, s(a(o.color, d), "0 0 1px rgba(0,0,0,.1)")));
			return n
		},
		opacity: function(t, e, i) {
			t.childNodes.length > e && (t.childNodes[e].style.opacity = i)
		}
	});
	var h = r(t("group"), {
		behavior: "url(#default#VML)"
	});
	return !n(h, "transform") && h.adj ? l() : u = n(h, "animation"), s
});
/*ladda.min.js*/
/*!
 * Ladda 0.9.4 (2014-06-21, 11:24)
 * http://lab.hakim.se/ladda
 * MIT licensed
 *
 * Copyright (C) 2014 Hakim El Hattab, http://hakim.se
 */
(function(t, e) {
	"object" == typeof exports ? module.exports = e(require("spin.js")) : "function" == typeof define && define.amd ?
		define(["spin"], e) : t.Ladda = e(t.Spinner)
})(this, function(t) {
	"use strict";

	function e(t) {
		if (t === void 0) return console.warn("Ladda button target must be defined."), void 0;
		t.querySelector(".ladda-label") || (t.innerHTML = '<span class="ladda-label">' + t.innerHTML + "</span>");
		var e, n = document.createElement("span");
		n.className = "ladda-spinner", t.appendChild(n);
		var r, a = {
			start: function() {
				return e || (e = o(t)), t.setAttribute("disabled", ""), t.setAttribute("data-loading", ""), clearTimeout(r), e.spin(
					n), this.setProgress(0), this
			},
			startAfter: function(t) {
				return clearTimeout(r), r = setTimeout(function() {
					a.start()
				}, t), this
			},
			stop: function() {
				return t.removeAttribute("disabled"), t.removeAttribute("data-loading"), clearTimeout(r), e && (r = setTimeout(
					function() {
						e.stop()
					}, 1e3)), this
			},
			toggle: function() {
				return this.isLoading() ? this.stop() : this.start(), this
			},
			setProgress: function(e) {
				e = Math.max(Math.min(e, 1), 0);
				var n = t.querySelector(".ladda-progress");
				0 === e && n && n.parentNode ? n.parentNode.removeChild(n) : (n || (n = document.createElement("div"), n.className =
					"ladda-progress", t.appendChild(n)), n.style.width = (e || 0) * t.offsetWidth + "px")
			},
			enable: function() {
				return this.stop(), this
			},
			disable: function() {
				return this.stop(), t.setAttribute("disabled", ""), this
			},
			isLoading: function() {
				return t.hasAttribute("data-loading")
			},
			remove: function() {
				clearTimeout(r), t.removeAttribute("disabled", ""), t.removeAttribute("data-loading", ""), e && (e.stop(), e =
					null);
				for (var n = 0, i = u.length; i > n; n++)
					if (a === u[n]) {
						u.splice(n, 1);
						break
					}
			}
		};
		return u.push(a), a
	}

	function n(t, e) {
		for (; t.parentNode && t.tagName !== e;) t = t.parentNode;
		return e === t.tagName ? t : void 0
	}

	function r(t) {
		for (var e = ["input", "textarea"], n = [], r = 0; e.length > r; r++)
			for (var a = t.getElementsByTagName(e[r]), i = 0; a.length > i; i++) a[i].hasAttribute("required") && n.push(a[i]);
		return n
	}

	function a(t, a) {
		a = a || {};
		var i = [];
		"string" == typeof t ? i = s(document.querySelectorAll(t)) : "object" == typeof t && "string" == typeof t.nodeName &&
			(i = [t]);
		for (var o = 0, u = i.length; u > o; o++)(function() {
			var t = i[o];
			if ("function" == typeof t.addEventListener) {
				var s = e(t),
					u = -1;
				t.addEventListener("click", function() {
					var e = !0,
						i = n(t, "FORM");
					if (i !== void 0)
						for (var o = r(i), d = 0; o.length > d; d++) "" === o[d].value.replace(/^\s+|\s+$/g, "") && (e = !1);
					e && (s.startAfter(1), "number" == typeof a.timeout && (clearTimeout(u), u = setTimeout(s.stop, a.timeout)),
						"function" == typeof a.callback && a.callback.apply(null, [s]))
				}, !1)
			}
		})()
	}

	function i() {
		for (var t = 0, e = u.length; e > t; t++) u[t].stop()
	}

	function o(e) {
		var n, r = e.offsetHeight;
		0 === r && (r = parseFloat(window.getComputedStyle(e).height)), r > 32 && (r *= .8), e.hasAttribute(
			"data-spinner-size") && (r = parseInt(e.getAttribute("data-spinner-size"), 10)), e.hasAttribute(
			"data-spinner-color") && (n = e.getAttribute("data-spinner-color"));
		var a = 12,
			i = .2 * r,
			o = .6 * i,
			s = 7 > i ? 2 : 3;
		return new t({
			color: n || "#fff",
			lines: a,
			radius: i,
			length: o,
			width: s,
			zIndex: "auto",
			top: "auto",
			left: "auto",
			className: ""
		})
	}

	function s(t) {
		for (var e = [], n = 0; t.length > n; n++) e.push(t[n]);
		return e
	}
	var u = [];
	return {
		bind: a,
		create: e,
		stopAll: i
	}
});
/*ladda-bootstrap.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
$.components.register("ladda", {
	mode: "init",
	defaults: {
		timeout: 2e3
	},
	init: function() {
		if ("undefined" != typeof Ladda) {
			var defaults = $.components.getDefaults("ladda");
			Ladda.bind('[data-plugin="ladda"]', defaults)
		}
	}
}), $.components.register("laddaProgress", {
	mode: "init",
	defaults: {
		init: function(instance) {
			var progress = 0,
				interval = setInterval(function() {
					progress = Math.min(progress + .1 * Math.random(), 1), instance.setProgress(progress), 1 === progress && (
						instance.stop(), clearInterval(interval))
				}, 200)
		}
	},
	init: function() {
		if ("undefined" != typeof Ladda) {
			var defaults = $.components.getDefaults("laddaProgress");
			Ladda.bind('[data-plugin="laddaProgress"]', defaults)
		}
	}
});
/*tablesaw.js*/
/*! Tablesaw - v2.0.2 - 2015-10-28
 * https://github.com/filamentgroup/tablesaw
 * Copyright (c) 2015 Filament Group; Licensed  */
/*
 * tablesaw: A set of plugins for responsive tables
 * Stack and Column Toggle tables
 * Copyright (c) 2013 Filament Group, Inc.
 * MIT License
 */

if (typeof Tablesaw === "undefined") {
	Tablesaw = {
		i18n: {
			modes: ['Stack', 'Swipe', 'Toggle'],
			columns: 'Col<span class=\"a11y-sm\">umn</span>s',
			columnBtnText: 'Columns',
			columnsDialogError: 'No eligible columns.',
			sort: 'Sort'
		},
		// cut the mustard
		mustard: 'querySelector' in document &&
			(!window.blackberry || window.WebKitPoint) &&
			!window.operamini
	};
}
if (!Tablesaw.config) {
	Tablesaw.config = {};
}
if (Tablesaw.mustard) {
	jQuery(document.documentElement).addClass('tablesaw-enhanced');
}

;
(function($) {
	var pluginName = "table",
		classes = {
			toolbar: "tablesaw-bar"
		},
		events = {
			create: "tablesawcreate",
			destroy: "tablesawdestroy",
			refresh: "tablesawrefresh"
		},
		defaultMode = "stack",
		initSelector = "table[data-tablesaw-mode],table[data-tablesaw-sortable]";

	var Table = function(element) {
		if (!element) {
			throw new Error("Tablesaw requires an element.");
		}

		this.table = element;
		this.$table = $(element);

		this.mode = this.$table.attr("data-tablesaw-mode") || defaultMode;

		this.init();
	};

	Table.prototype.init = function() {
		// assign an id if there is none
		if (!this.$table.attr("id")) {
			this.$table.attr("id", pluginName + "-" + Math.round(Math.random() * 10000));
		}

		this.createToolbar();

		var colstart = this._initCells();

		this.$table.trigger(events.create, [this, colstart]);
	};

	Table.prototype._initCells = function() {
		var colstart,
			thrs = this.table.querySelectorAll("thead tr"),
			self = this;

		$(thrs).each(function() {
			var coltally = 0;

			$(this).children().each(function() {
				var span = parseInt(this.getAttribute("colspan"), 10),
					sel = ":nth-child(" + (coltally + 1) + ")";

				colstart = coltally + 1;

				if (span) {
					for (var k = 0; k < span - 1; k++) {
						coltally++;
						sel += ", :nth-child(" + (coltally + 1) + ")";
					}
				}

				// Store "cells" data on header as a reference to all cells in the same column as this TH
				this.cells = self.$table.find("tr").not(thrs[0]).not(this).children().filter(sel);
				coltally++;
			});
		});

		return colstart;
	};

	Table.prototype.refresh = function() {
		this._initCells();

		this.$table.trigger(events.refresh);
	};

	Table.prototype.createToolbar = function() {
		// Insert the toolbar
		// TODO move this into a separate component
		var $toolbar = this.$table.prev().filter('.' + classes.toolbar);
		if (!$toolbar.length) {
			$toolbar = $('<div>')
				.addClass(classes.toolbar)
				.insertBefore(this.$table);
		}
		this.$toolbar = $toolbar;

		if (this.mode) {
			this.$toolbar.addClass('mode-' + this.mode);
		}
	};

	Table.prototype.destroy = function() {
		// Don’t remove the toolbar. Some of the table features are not yet destroy-friendly.
		this.$table.prev().filter('.' + classes.toolbar).each(function() {
			this.className = this.className.replace(/\bmode\-\w*\b/gi, '');
		});

		var tableId = this.$table.attr('id');
		$(document).unbind("." + tableId);
		$(window).unbind("." + tableId);

		// other plugins
		this.$table.trigger(events.destroy, [this]);

		this.$table.removeAttr('data-tablesaw-mode');

		this.$table.removeData(pluginName);
	};

	// Collection method.
	$.fn[pluginName] = function() {
		return this.each(function() {
			var $t = $(this);

			if ($t.data(pluginName)) {
				return;
			}

			var table = new Table(this);
			$t.data(pluginName, table);
		});
	};

	$(document).on("enhance.tablesaw", function(e) {
		// Cut the mustard
		if (Tablesaw.mustard) {
			$(e.target).find(initSelector)[pluginName]();
		}
	});

}(jQuery));

;
(function(win, $, undefined) {

	var classes = {
		stackTable: 'tablesaw-stack',
		cellLabels: 'tablesaw-cell-label',
		cellContentLabels: 'tablesaw-cell-content'
	};

	var data = {
		obj: 'tablesaw-stack'
	};

	var attrs = {
		labelless: 'data-tablesaw-no-labels',
		hideempty: 'data-tablesaw-hide-empty'
	};

	var Stack = function(element) {

		this.$table = $(element);

		this.labelless = this.$table.is('[' + attrs.labelless + ']');
		this.hideempty = this.$table.is('[' + attrs.hideempty + ']');

		if (!this.labelless) {
			// allHeaders references headers, plus all THs in the thead, which may include several rows, or not
			this.allHeaders = this.$table.find("th");
		}

		this.$table.data(data.obj, this);
	};

	Stack.prototype.init = function(colstart) {
		this.$table.addClass(classes.stackTable);

		if (this.labelless) {
			return;
		}

		// get headers in reverse order so that top-level headers are appended last
		var reverseHeaders = $(this.allHeaders);
		var hideempty = this.hideempty;

		// create the hide/show toggles
		reverseHeaders.each(function() {
			var $t = $(this),
				$cells = $(this.cells).filter(function() {
					return !$(this).parent().is("[" + attrs.labelless + "]") && (!hideempty || !$(this).is(":empty"));
				}),
				hierarchyClass = $cells.not(this).filter("thead th").length && " tablesaw-cell-label-top",
				// TODO reduce coupling with sortable
				$sortableButton = $t.find(".tablesaw-sortable-btn"),
				html = $sortableButton.length ? $sortableButton.html() : $t.html();

			if (html !== "") {
				if (hierarchyClass) {
					var iteration = parseInt($(this).attr("colspan"), 10),
						filter = "";

					if (iteration) {
						filter = "td:nth-child(" + iteration + "n + " + (colstart) + ")";
					}
					$cells.filter(filter).prepend("<b class='" + classes.cellLabels + hierarchyClass + "'>" + html + "</b>");
				} else {
					$cells.wrapInner("<span class='" + classes.cellContentLabels + "'></span>");
					$cells.prepend("<b class='" + classes.cellLabels + "'>" + html + "</b>");
				}
			}
		});
	};

	Stack.prototype.destroy = function() {
		this.$table.removeClass(classes.stackTable);
		this.$table.find('.' + classes.cellLabels).remove();
		this.$table.find('.' + classes.cellContentLabels).each(function() {
			$(this).replaceWith(this.childNodes);
		});
	};

	// on tablecreate, init
	$(document).on("tablesawcreate", function(e, Tablesaw, colstart) {
		if (Tablesaw.mode === 'stack') {
			var table = new Stack(Tablesaw.table);
			table.init(colstart);
		}

	});

	$(document).on("tablesawdestroy", function(e, Tablesaw) {

		if (Tablesaw.mode === 'stack') {
			$(Tablesaw.table).data(data.obj).destroy();
		}

	});

}(this, jQuery));;
(function($) {
	var pluginName = "tablesawbtn",
		methods = {
			_create: function() {
				return $(this).each(function() {
					$(this)
						.trigger("beforecreate." + pluginName)[pluginName]("_init")
						.trigger("create." + pluginName);
				});
			},
			_init: function() {
				var oEl = $(this),
					sel = this.getElementsByTagName("select")[0];

				if (sel) {
					$(this)
						.addClass("btn-select")[pluginName]("_select", sel);
				}
				return oEl;
			},
			_select: function(sel) {
				var update = function(oEl, sel) {
					var opts = $(sel).find("option"),
						label, el, children;

					opts.each(function() {
						var opt = this;
						if (opt.selected) {
							label = document.createTextNode(opt.text);
						}
					});

					children = oEl.childNodes;
					if (opts.length > 0) {
						for (var i = 0, l = children.length; i < l; i++) {
							el = children[i];

							if (el && el.nodeType === 3) {
								oEl.replaceChild(label, el);
							}
						}
					}
				};

				update(this, sel);
				$(this).bind("change refresh", function() {
					update(this, sel);
				});
			}
		};

	// Collection method.
	$.fn[pluginName] = function(arrg, a, b, c) {
		return this.each(function() {

			// if it's a method
			if (arrg && typeof(arrg) === "string") {
				return $.fn[pluginName].prototype[arrg].call(this, a, b, c);
			}

			// don't re-init
			if ($(this).data(pluginName + "active")) {
				return $(this);
			}

			// otherwise, init

			$(this).data(pluginName + "active", true);
			$.fn[pluginName].prototype._create.call(this);
		});
	};

	// add methods
	$.extend($.fn[pluginName].prototype, methods);

}(jQuery));;
(function(win, $, undefined) {

	var ColumnToggle = function(element) {

		this.$table = $(element);

		this.classes = {
			columnToggleTable: 'tablesaw-columntoggle',
			columnBtnContain: 'tablesaw-columntoggle-btnwrap tablesaw-advance',
			columnBtn: 'tablesaw-columntoggle-btn tablesaw-nav-btn down',
			popup: 'tablesaw-columntoggle-popup',
			priorityPrefix: 'tablesaw-priority-',
			// TODO duplicate class, also in tables.js
			toolbar: 'tablesaw-bar'
		};

		// Expose headers and allHeaders properties on the widget
		// headers references the THs within the first TR in the table
		this.headers = this.$table.find('tr:first > th');

		this.$table.data('tablesaw-coltoggle', this);
	};

	ColumnToggle.prototype.init = function() {

		var tableId,
			id,
			$menuButton,
			$popup,
			$menu,
			$btnContain,
			self = this;

		this.$table.addClass(this.classes.columnToggleTable);

		tableId = this.$table.attr("id");
		id = tableId + "-popup";
		$btnContain = $("<div class='" + this.classes.columnBtnContain + "'></div>");
		$menuButton = $("<a href='#" + id + "' class='btn btn-micro " + this.classes.columnBtn + "' data-popup-link>" +
			"<span>" + Tablesaw.i18n.columnBtnText + "</span></a>");
		$popup = $("<div class='dialog-table-coltoggle " + this.classes.popup + "' id='" + id + "'></div>");
		$menu = $("<div class='btn-group'></div>");

		var hasNonPersistentHeaders = false;
		$(this.headers).not("td").each(function() {
			var $this = $(this),
				priority = $this.attr("data-tablesaw-priority"),
				$cells = self.$getCells(this);

			if (priority && priority !== "persist") {
				$cells.addClass(self.classes.priorityPrefix + priority);

				$("<label><input type='checkbox' checked>" + $this.text() + "</label>")
					.appendTo($menu)
					.children(0)
					.data("tablesaw-header", this);

				hasNonPersistentHeaders = true;
			}
		});

		if (!hasNonPersistentHeaders) {
			$menu.append('<label>' + Tablesaw.i18n.columnsDialogError + '</label>');
		}

		$menu.appendTo($popup);

		// bind change event listeners to inputs - TODO: move to a private method?
		$menu.find('input[type="checkbox"]').on("change", function(e) {
			var checked = e.target.checked;

			self.$getCellsFromCheckbox(e.target)
				.toggleClass("tablesaw-cell-hidden", !checked)
				.toggleClass("tablesaw-cell-visible", checked);

			self.$table.trigger('tablesawcolumns');
		});

		$menuButton.appendTo($btnContain);
		$btnContain.appendTo(this.$table.prev().filter('.' + this.classes.toolbar));

		var closeTimeout;

		function openPopup() {
			$btnContain.addClass('visible');
			$menuButton.removeClass('down').addClass('up');

			$(document).unbind('click.' + tableId, closePopup);

			window.clearTimeout(closeTimeout);
			closeTimeout = window.setTimeout(function() {
				$(document).one('click.' + tableId, closePopup);
			}, 15);
		}

		function closePopup(event) {
			// Click came from inside the popup, ignore.
			if (event && $(event.target).closest("." + self.classes.popup).length) {
				return;
			}

			$(document).unbind('click.' + tableId);
			$menuButton.removeClass('up').addClass('down');
			$btnContain.removeClass('visible');
		}

		$menuButton.on("click.tablesaw", function(event) {
			event.preventDefault();

			if (!$btnContain.is(".visible")) {
				openPopup();
			} else {
				closePopup();
			}
		});

		$popup.appendTo($btnContain);

		this.$menu = $menu;

		$(window).on("resize." + tableId, function() {
			self.refreshToggle();
		});

		this.refreshToggle();
	};

	ColumnToggle.prototype.$getCells = function(th) {
		return $(th).add(th.cells);
	};

	ColumnToggle.prototype.$getCellsFromCheckbox = function(checkbox) {
		var th = $(checkbox).data("tablesaw-header");
		return this.$getCells(th);
	};

	ColumnToggle.prototype.refreshToggle = function() {
		var self = this;
		this.$menu.find("input").each(function() {
			this.checked = self.$getCellsFromCheckbox(this).eq(0).css("display") === "table-cell";
		});
	};

	ColumnToggle.prototype.refreshPriority = function() {
		var self = this;
		$(this.headers).not("td").each(function() {
			var $this = $(this),
				priority = $this.attr("data-tablesaw-priority"),
				$cells = $this.add(this.cells);

			if (priority && priority !== "persist") {
				$cells.addClass(self.classes.priorityPrefix + priority);
			}
		});
	};

	ColumnToggle.prototype.destroy = function() {
		// table toolbars, document and window .tableId events
		// removed in parent tables.js destroy method

		this.$table.removeClass(this.classes.columnToggleTable);
		this.$table.find('th, td').each(function() {
			var $cell = $(this);
			$cell.removeClass('tablesaw-cell-hidden')
				.removeClass('tablesaw-cell-visible');

			this.className = this.className.replace(/\bui\-table\-priority\-\d\b/g, '');
		});
	};

	// on tablecreate, init
	$(document).on("tablesawcreate", function(e, Tablesaw) {

		if (Tablesaw.mode === 'columntoggle') {
			var table = new ColumnToggle(Tablesaw.table);
			table.init();
		}

	});

	$(document).on("tablesawdestroy", function(e, Tablesaw) {
		if (Tablesaw.mode === 'columntoggle') {
			$(Tablesaw.table).data('tablesaw-coltoggle').destroy();
		}
	});

}(this, jQuery));;
(function(win, $, undefined) {

	$.extend(Tablesaw.config, {
		swipe: {
			horizontalThreshold: 15,
			verticalThreshold: 30
		}
	});

	function isIE8() {
		var div = document.createElement('div'),
			all = div.getElementsByTagName('i');

		div.innerHTML = '<!--[if lte IE 8]><i></i><![endif]-->';

		return !!all.length;
	}

	function createSwipeTable($table) {

		var $btns = $("<div class='tablesaw-advance'></div>"),
			$prevBtn = $("<a href='#' class='tablesaw-nav-btn btn btn-micro left' title='Previous Column'></a>").appendTo($btns),
			$nextBtn = $("<a href='#' class='tablesaw-nav-btn btn btn-micro right' title='Next Column'></a>").appendTo($btns),
			hideBtn = 'disabled',
			persistWidths = 'tablesaw-fix-persist',
			$headerCells = $table.find("thead th"),
			$headerCellsNoPersist = $headerCells.not('[data-tablesaw-priority="persist"]'),
			headerWidths = [],
			$head = $(document.head || 'head'),
			tableId = $table.attr('id'),
			// TODO switch this to an nth-child feature test
			supportsNthChild = !isIE8();

		if (!$headerCells.length) {
			throw new Error("tablesaw swipe: no header cells found. Are you using <th> inside of <thead>?");
		}

		// Calculate initial widths
		$table.css('width', 'auto');
		$headerCells.each(function() {
			headerWidths.push($(this).outerWidth());
		});
		$table.css('width', '');

		$btns.appendTo($table.prev().filter('.tablesaw-bar'));

		$table.addClass("tablesaw-swipe");

		if (!tableId) {
			tableId = 'tableswipe-' + Math.round(Math.random() * 10000);
			$table.attr('id', tableId);
		}

		function $getCells(headerCell) {
			return $(headerCell.cells).add(headerCell);
		}

		function showColumn(headerCell) {
			$getCells(headerCell).removeClass('tablesaw-cell-hidden');
		}

		function hideColumn(headerCell) {
			$getCells(headerCell).addClass('tablesaw-cell-hidden');
		}

		function persistColumn(headerCell) {
			$getCells(headerCell).addClass('tablesaw-cell-persist');
		}

		function isPersistent(headerCell) {
			return $(headerCell).is('[data-tablesaw-priority="persist"]');
		}

		function unmaintainWidths() {
			$table.removeClass(persistWidths);
			$('#' + tableId + '-persist').remove();
		}

		function maintainWidths() {
			var prefix = '#' + tableId + '.tablesaw-swipe ',
				styles = [],
				tableWidth = $table.width(),
				hash = [],
				newHash;

			$headerCells.each(function(index) {
				var width;
				if (isPersistent(this)) {
					width = $(this).outerWidth();

					// Only save width on non-greedy columns (take up less than 75% of table width)
					if (width < tableWidth * 0.75) {
						hash.push(index + '-' + width);
						styles.push(prefix + ' .tablesaw-cell-persist:nth-child(' + (index + 1) + ') { width: ' + width + 'px; }');
					}
				}
			});
			newHash = hash.join('_');

			$table.addClass(persistWidths);

			var $style = $('#' + tableId + '-persist');
			// If style element not yet added OR if the widths have changed
			if (!$style.length || $style.data('hash') !== newHash) {
				// Remove existing
				$style.remove();

				if (styles.length) {
					$('<style>' + styles.join("\n") + '</style>')
						.attr('id', tableId + '-persist')
						.data('hash', newHash)
						.appendTo($head);
				}
			}
		}

		function getNext() {
			var next = [],
				checkFound;

			$headerCellsNoPersist.each(function(i) {
				var $t = $(this),
					isHidden = $t.css("display") === "none" || $t.is(".tablesaw-cell-hidden");

				if (!isHidden && !checkFound) {
					checkFound = true;
					next[0] = i;
				} else if (isHidden && checkFound) {
					next[1] = i;

					return false;
				}
			});

			return next;
		}

		function getPrev() {
			var next = getNext();
			return [next[1] - 1, next[0] - 1];
		}

		function nextpair(fwd) {
			return fwd ? getNext() : getPrev();
		}

		function canAdvance(pair) {
			return pair[1] > -1 && pair[1] < $headerCellsNoPersist.length;
		}

		function matchesMedia() {
			var matchMedia = $table.attr("data-tablesaw-swipe-media");
			return !matchMedia || ("matchMedia" in win) && win.matchMedia(matchMedia).matches;
		}

		function fakeBreakpoints() {
			if (!matchesMedia()) {
				return;
			}

			var extraPaddingPixels = 20,
				containerWidth = $table.parent().width(),
				persist = [],
				sum = 0,
				sums = [],
				visibleNonPersistantCount = $headerCells.length;

			$headerCells.each(function(index) {
				var $t = $(this),
					isPersist = $t.is('[data-tablesaw-priority="persist"]');

				persist.push(isPersist);

				sum += headerWidths[index] + (isPersist ? 0 : extraPaddingPixels);
				sums.push(sum);

				// is persistent or is hidden
				if (isPersist || sum > containerWidth) {
					visibleNonPersistantCount--;
				}
			});

			var needsNonPersistentColumn = visibleNonPersistantCount === 0;

			$headerCells.each(function(index) {
				if (persist[index]) {

					// for visual box-shadow
					persistColumn(this);
					return;
				}

				if (sums[index] <= containerWidth || needsNonPersistentColumn) {
					needsNonPersistentColumn = false;
					showColumn(this);
				} else {
					hideColumn(this);
				}
			});

			if (supportsNthChild) {
				unmaintainWidths();
			}
			$table.trigger('tablesawcolumns');
		}

		function advance(fwd) {
			var pair = nextpair(fwd);
			if (canAdvance(pair)) {
				if (isNaN(pair[0])) {
					if (fwd) {
						pair[0] = 0;
					} else {
						pair[0] = $headerCellsNoPersist.length - 1;
					}
				}

				if (supportsNthChild) {
					maintainWidths();
				}

				hideColumn($headerCellsNoPersist.get(pair[0]));
				showColumn($headerCellsNoPersist.get(pair[1]));

				$table.trigger('tablesawcolumns');
			}
		}

		$prevBtn.add($nextBtn).click(function(e) {
			advance(!!$(e.target).closest($nextBtn).length);
			e.preventDefault();
		});

		function getCoord(event, key) {
			return (event.touches || event.originalEvent.touches)[0][key];
		}

		$table
			.bind("touchstart.swipetoggle", function(e) {
				var originX = getCoord(e, 'pageX'),
					originY = getCoord(e, 'pageY'),
					x,
					y;

				$(win).off("resize", fakeBreakpoints);

				$(this)
					.bind("touchmove", function(e) {
						x = getCoord(e, 'pageX');
						y = getCoord(e, 'pageY');
						var cfg = Tablesaw.config.swipe;
						if (Math.abs(x - originX) > cfg.horizontalThreshold && Math.abs(y - originY) < cfg.verticalThreshold) {
							e.preventDefault();
						}
					})
					.bind("touchend.swipetoggle", function() {
						var cfg = Tablesaw.config.swipe;
						if (Math.abs(y - originY) < cfg.verticalThreshold) {
							if (x - originX < -1 * cfg.horizontalThreshold) {
								advance(true);
							}
							if (x - originX > cfg.horizontalThreshold) {
								advance(false);
							}
						}

						window.setTimeout(function() {
							$(win).on("resize", fakeBreakpoints);
						}, 300);
						$(this).unbind("touchmove touchend");
					});

			})
			.bind("tablesawcolumns.swipetoggle", function() {
				$prevBtn[canAdvance(getPrev()) ? "removeClass" : "addClass"](hideBtn);
				$nextBtn[canAdvance(getNext()) ? "removeClass" : "addClass"](hideBtn);
			})
			.bind("tablesawnext.swipetoggle", function() {
				advance(true);
			})
			.bind("tablesawprev.swipetoggle", function() {
				advance(false);
			})
			.bind("tablesawdestroy.swipetoggle", function() {
				var $t = $(this);

				$t.removeClass('tablesaw-swipe');
				$t.prev().filter('.tablesaw-bar').find('.tablesaw-advance').remove();
				$(win).off("resize", fakeBreakpoints);

				$t.unbind(".swipetoggle");
			});

		fakeBreakpoints();
		$(win).on("resize", fakeBreakpoints);
	}



	// on tablecreate, init
	$(document).on("tablesawcreate", function(e, Tablesaw) {

		if (Tablesaw.mode === 'swipe') {
			createSwipeTable(Tablesaw.$table);
		}

	});

}(this, jQuery));

;
(function($) {
	function getSortValue(cell) {
		return $.map(cell.childNodes, function(el) {
			var $el = $(el);
			if ($el.is('input, select')) {
				return $el.val();
			} else if ($el.hasClass('tablesaw-cell-label')) {
				return;
			}
			return $.trim($el.text());
		}).join('');
	}

	var pluginName = "tablesaw-sortable",
		initSelector = "table[data-" + pluginName + "]",
		sortableSwitchSelector = "[data-" + pluginName + "-switch]",
		attrs = {
			defaultCol: "data-tablesaw-sortable-default-col",
			numericCol: "data-tablesaw-sortable-numeric"
		},
		classes = {
			head: pluginName + "-head",
			ascend: pluginName + "-ascending",
			descend: pluginName + "-descending",
			switcher: pluginName + "-switch",
			tableToolbar: 'tablesaw-toolbar',
			sortButton: pluginName + "-btn"
		},
		methods = {
			_create: function(o) {
				return $(this).each(function() {
					var init = $(this).data("init" + pluginName);
					if (init) {
						return false;
					}
					$(this)
						.data("init" + pluginName, true)
						.trigger("beforecreate." + pluginName)[pluginName]("_init", o)
						.trigger("create." + pluginName);
				});
			},
			_init: function() {
				var el = $(this),
					heads,
					$switcher;

				var addClassToTable = function() {
						el.addClass(pluginName);
					},
					addClassToHeads = function(h) {
						$.each(h, function(i, v) {
							$(v).addClass(classes.head);
						});
					},
					makeHeadsActionable = function(h, fn) {
						$.each(h, function(i, v) {
							var b = $("<button class='" + classes.sortButton + "'/>");
							b.bind("click", {
								col: v
							}, fn);
							$(v).wrapInner(b);
						});
					},
					clearOthers = function(sibs) {
						$.each(sibs, function(i, v) {
							var col = $(v);
							col.removeAttr(attrs.defaultCol);
							col.removeClass(classes.ascend);
							col.removeClass(classes.descend);
						});
					},
					headsOnAction = function(e) {
						if ($(e.target).is('a[href]')) {
							return;
						}

						e.stopPropagation();
						var head = $(this).parent(),
							v = e.data.col,
							newSortValue = heads.index(head);

						clearOthers(head.siblings());
						if (head.hasClass(classes.descend)) {
							el[pluginName]("sortBy", v, true);
							newSortValue += '_asc';
						} else {
							el[pluginName]("sortBy", v);
							newSortValue += '_desc';
						}
						if ($switcher) {
							$switcher.find('select').val(newSortValue).trigger('refresh');
						}

						e.preventDefault();
					},
					handleDefault = function(heads) {
						$.each(heads, function(idx, el) {
							var $el = $(el);
							if ($el.is("[" + attrs.defaultCol + "]")) {
								if (!$el.hasClass(classes.descend)) {
									$el.addClass(classes.ascend);
								}
							}
						});
					},
					addSwitcher = function(heads) {
						$switcher = $('<div>').addClass(classes.switcher).addClass(classes.tableToolbar).html(function() {
							var html = ['<label>' + Tablesaw.i18n.sort + ':'];

							html.push('<span class="btn btn-small">&#160;<select>');
							heads.each(function(j) {
								var $t = $(this);
								var isDefaultCol = $t.is("[" + attrs.defaultCol + "]");
								var isDescending = $t.hasClass(classes.descend);

								var hasNumericAttribute = $t.is('[data-sortable-numeric]');
								var numericCount = 0;
								// Check only the first four rows to see if the column is numbers.
								var numericCountMax = 5;

								$(this.cells).slice(0, numericCountMax).each(function() {
									if (!isNaN(parseInt(getSortValue(this), 10))) {
										numericCount++;
									}
								});
								var isNumeric = numericCount === numericCountMax;
								if (!hasNumericAttribute) {
									$t.attr("data-sortable-numeric", isNumeric ? "" : "false");
								}

								html.push('<option' + (isDefaultCol && !isDescending ? ' selected' : '') + ' value="' + j + '_asc">' + $t
									.text() + ' ' + (isNumeric ? '&#x2191;' : '(A-Z)') + '</option>');
								html.push('<option' + (isDefaultCol && isDescending ? ' selected' : '') + ' value="' + j + '_desc">' + $t
									.text() + ' ' + (isNumeric ? '&#x2193;' : '(Z-A)') + '</option>');
							});
							html.push('</select></span></label>');

							return html.join('');
						});

						var $toolbar = el.prev().filter('.tablesaw-bar'),
							$firstChild = $toolbar.children().eq(0);

						if ($firstChild.length) {
							$switcher.insertBefore($firstChild);
						} else {
							$switcher.appendTo($toolbar);
						}
						$switcher.find('.btn').tablesawbtn();
						$switcher.find('select').on('change', function() {
							var val = $(this).val().split('_'),
								head = heads.eq(val[0]);

							clearOthers(head.siblings());
							el[pluginName]('sortBy', head.get(0), val[1] === 'asc');
						});
					};

				addClassToTable();
				heads = el.find("thead th[data-" + pluginName + "-col]");
				addClassToHeads(heads);
				makeHeadsActionable(heads, headsOnAction);
				handleDefault(heads);

				if (el.is(sortableSwitchSelector)) {
					addSwitcher(heads, el.find('tbody tr:nth-child(-n+3)'));
				}
			},
			getColumnNumber: function(col) {
				return $(col).prevAll().length;
			},
			getTableRows: function() {
				return $(this).find("tbody tr");
			},
			sortRows: function(rows, colNum, ascending, col) {
				var cells, fn, sorted;
				var getCells = function(rows) {
						var cells = [];
						$.each(rows, function(i, r) {
							var element = $(r).children().get(colNum);
							cells.push({
								element: element,
								cell: getSortValue(element),
								rowNum: i
							});
						});
						return cells;
					},
					getSortFxn = function(ascending, forceNumeric) {
						var fn,
							regex = /[^\-\+\d\.]/g;
						if (ascending) {
							fn = function(a, b) {
								if (forceNumeric) {
									return parseFloat(a.cell.replace(regex, '')) - parseFloat(b.cell.replace(regex, ''));
								} else {
									return a.cell.toLowerCase() > b.cell.toLowerCase() ? 1 : -1;
								}
							};
						} else {
							fn = function(a, b) {
								if (forceNumeric) {
									return parseFloat(b.cell.replace(regex, '')) - parseFloat(a.cell.replace(regex, ''));
								} else {
									return a.cell.toLowerCase() < b.cell.toLowerCase() ? 1 : -1;
								}
							};
						}
						return fn;
					},
					applyToRows = function(sorted, rows) {
						var newRows = [],
							i, l, cur;
						for (i = 0, l = sorted.length; i < l; i++) {
							cur = sorted[i].rowNum;
							newRows.push(rows[cur]);
						}
						return newRows;
					};

				cells = getCells(rows);
				var customFn = $(col).data('tablesaw-sort');
				fn = (customFn && typeof customFn === "function" ? customFn(ascending) : false) ||
					getSortFxn(ascending, $(col).is('[data-sortable-numeric]') && !$(col).is('[data-sortable-numeric="false"]'));
				sorted = cells.sort(fn);
				rows = applyToRows(sorted, rows);
				return rows;
			},
			replaceTableRows: function(rows) {
				var el = $(this),
					body = el.find("tbody");
				body.html(rows);
			},
			makeColDefault: function(col, a) {
				var c = $(col);
				c.attr(attrs.defaultCol, "true");
				if (a) {
					c.removeClass(classes.descend);
					c.addClass(classes.ascend);
				} else {
					c.removeClass(classes.ascend);
					c.addClass(classes.descend);
				}
			},
			sortBy: function(col, ascending) {
				var el = $(this),
					colNum, rows;

				colNum = el[pluginName]("getColumnNumber", col);
				rows = el[pluginName]("getTableRows");
				rows = el[pluginName]("sortRows", rows, colNum, ascending, col);
				el[pluginName]("replaceTableRows", rows);
				el[pluginName]("makeColDefault", col, ascending);
			}
		};

	// Collection method.
	$.fn[pluginName] = function(arrg) {
		var args = Array.prototype.slice.call(arguments, 1),
			returnVal;

		// if it's a method
		if (arrg && typeof(arrg) === "string") {
			returnVal = $.fn[pluginName].prototype[arrg].apply(this[0], args);
			return (typeof returnVal !== "undefined") ? returnVal : $(this);
		}
		// check init
		if (!$(this).data(pluginName + "data")) {
			$(this).data(pluginName + "active", true);
			$.fn[pluginName].prototype._create.call(this, arrg);
		}
		return $(this);
	};
	// add methods
	$.extend($.fn[pluginName].prototype, methods);

	$(document).on("tablesawcreate", function(e, Tablesaw) {
		if (Tablesaw.$table.is(initSelector)) {
			Tablesaw.$table[pluginName]();
		}
	});

}(jQuery));

;
(function(win, $, undefined) {

	var MM = {
		attr: {
			init: 'data-tablesaw-minimap'
		}
	};

	function createMiniMap($table) {

		var $btns = $('<div class="tablesaw-advance minimap">'),
			$dotNav = $('<ul class="tablesaw-advance-dots">').appendTo($btns),
			hideDot = 'tablesaw-advance-dots-hide',
			$headerCells = $table.find('thead th');

		// populate dots
		$headerCells.each(function() {
			$dotNav.append('<li><i></i></li>');
		});

		$btns.appendTo($table.prev().filter('.tablesaw-bar'));

		function showMinimap($table) {
			var mq = $table.attr(MM.attr.init);
			return !mq || win.matchMedia && win.matchMedia(mq).matches;
		}

		function showHideNav() {
			if (!showMinimap($table)) {
				$btns.hide();
				return;
			}
			$btns.show();

			// show/hide dots
			var dots = $dotNav.find("li").removeClass(hideDot);
			$table.find("thead th").each(function(i) {
				if ($(this).css("display") === "none") {
					dots.eq(i).addClass(hideDot);
				}
			});
		}

		// run on init and resize
		showHideNav();
		$(win).on("resize", showHideNav);


		$table
			.bind("tablesawcolumns.minimap", function() {
				showHideNav();
			})
			.bind("tablesawdestroy.minimap", function() {
				var $t = $(this);

				$t.prev().filter('.tablesaw-bar').find('.tablesaw-advance').remove();
				$(win).off("resize", showHideNav);

				$t.unbind(".minimap");
			});
	}



	// on tablecreate, init
	$(document).on("tablesawcreate", function(e, Tablesaw) {

		if ((Tablesaw.mode === 'swipe' || Tablesaw.mode === 'columntoggle') && Tablesaw.$table.is('[ ' + MM.attr.init +
				']')) {
			createMiniMap(Tablesaw.$table);
		}

	});

}(this, jQuery));

;
(function(win, $) {

	var S = {
		selectors: {
			init: 'table[data-tablesaw-mode-switch]'
		},
		attributes: {
			excludeMode: 'data-tablesaw-mode-exclude'
		},
		classes: {
			main: 'tablesaw-modeswitch',
			toolbar: 'tablesaw-toolbar'
		},
		modes: ['stack', 'swipe', 'columntoggle'],
		init: function(table) {
			var $table = $(table),
				ignoreMode = $table.attr(S.attributes.excludeMode),
				$toolbar = $table.prev().filter('.tablesaw-bar'),
				modeVal = '',
				$switcher = $('<div>').addClass(S.classes.main + ' ' + S.classes.toolbar).html(function() {
					var html = ['<label>' + Tablesaw.i18n.columns + ':'],
						dataMode = $table.attr('data-tablesaw-mode'),
						isSelected;

					html.push('<span class="btn btn-small">&#160;<select>');
					for (var j = 0, k = S.modes.length; j < k; j++) {
						if (ignoreMode && ignoreMode.toLowerCase() === S.modes[j]) {
							continue;
						}

						isSelected = dataMode === S.modes[j];

						if (isSelected) {
							modeVal = S.modes[j];
						}

						html.push('<option' +
							(isSelected ? ' selected' : '') +
							' value="' + S.modes[j] + '">' + Tablesaw.i18n.modes[j] + '</option>');
					}
					html.push('</select></span></label>');

					return html.join('');
				});

			var $otherToolbarItems = $toolbar.find('.tablesaw-advance').eq(0);
			if ($otherToolbarItems.length) {
				$switcher.insertBefore($otherToolbarItems);
			} else {
				$switcher.appendTo($toolbar);
			}

			$switcher.find('.btn').tablesawbtn();
			$switcher.find('select').bind('change', S.onModeChange);
		},
		onModeChange: function() {
			var $t = $(this),
				$switcher = $t.closest('.' + S.classes.main),
				$table = $t.closest('.tablesaw-bar').nextUntil($table).eq(0),
				val = $t.val();

			$switcher.remove();
			$table.data('table').destroy();

			$table.attr('data-tablesaw-mode', val);
			$table.table();
		}
	};

	$(win.document).on("tablesawcreate", function(e, Tablesaw) {
		if (Tablesaw.$table.is(S.selectors.init)) {
			S.init(Tablesaw.table);
		}
	});

})(this, jQuery);
/*tablesaw-init.js*/
/*! Tablesaw - v2.0.2 - 2015-10-28
 * https://github.com/filamentgroup/tablesaw
 * Copyright (c) 2015 Filament Group; Licensed  */
;
(function($) {

	// DOM-ready auto-init of plugins.
	// Many plugins bind to an "enhance" event to init themselves on dom ready, or when new markup is inserted into the DOM
	$(function() {
		$(document).trigger("enhance.tablesaw");
	});

})(jQuery);
/*imagesloaded.js*/
/*!
 * imagesLoaded v3.0.2
 * JavaScript is all like "You images are done yet or what?"
 */

(function(window) {

	'use strict';

	var $ = window.jQuery;
	var console = window.console;
	var hasConsole = typeof console !== 'undefined';

	// -------------------------- helpers -------------------------- //

	// extend objects
	function extend(a, b) {
		for (var prop in b) {
			a[prop] = b[prop];
		}
		return a;
	}

	var objToString = Object.prototype.toString;

	function isArray(obj) {
		return objToString.call(obj) === '[object Array]';
	}

	// turn element or nodeList into an array
	function makeArray(obj) {
		var ary = [];
		if (isArray(obj)) {
			// use object if already an array
			ary = obj;
		} else if (typeof obj.length === 'number') {
			// convert nodeList to array
			for (var i = 0, len = obj.length; i < len; i++) {
				ary.push(obj[i]);
			}
		} else {
			// array of single index
			ary.push(obj);
		}
		return ary;
	}

	// --------------------------  -------------------------- //

	function defineImagesLoaded(EventEmitter, eventie) {

		/**
		 * @param {Array, Element, NodeList, String} elem
		 * @param {Object or Function} options - if function, use as callback
		 * @param {Function} onAlways - callback function
		 */
		function ImagesLoaded(elem, options, onAlways) {
			// coerce ImagesLoaded() without new, to be new ImagesLoaded()
			if (!(this instanceof ImagesLoaded)) {
				return new ImagesLoaded(elem, options);
			}
			// use elem as selector string
			if (typeof elem === 'string') {
				elem = document.querySelectorAll(elem);
			}

			this.elements = makeArray(elem);
			this.options = extend({}, this.options);

			if (typeof options === 'function') {
				onAlways = options;
			} else {
				extend(this.options, options);
			}

			if (onAlways) {
				this.on('always', onAlways);
			}

			this.getImages();

			if ($) {
				// add jQuery Deferred object
				this.jqDeferred = new $.Deferred();
			}

			// HACK check async to allow time to bind listeners
			var _this = this;
			setTimeout(function() {
				_this.check();
			});
		}

		ImagesLoaded.prototype = new EventEmitter();

		ImagesLoaded.prototype.options = {};

		ImagesLoaded.prototype.getImages = function() {
			this.images = [];

			// filter & find items if we have an item selector
			for (var i = 0, len = this.elements.length; i < len; i++) {
				var elem = this.elements[i];
				// filter siblings
				if (elem.nodeName === 'IMG') {
					this.addImage(elem);
				}
				// find children
				var childElems = elem.querySelectorAll('img');
				// concat childElems to filterFound array
				for (var j = 0, jLen = childElems.length; j < jLen; j++) {
					var img = childElems[j];
					this.addImage(img);
				}
			}
		};

		/**
		 * @param {Image} img
		 */
		ImagesLoaded.prototype.addImage = function(img) {
			var loadingImage = new LoadingImage(img);
			this.images.push(loadingImage);
		};

		ImagesLoaded.prototype.check = function() {
			var _this = this;
			var checkedCount = 0;
			var length = this.images.length;
			this.hasAnyBroken = false;
			// complete if no images
			if (!length) {
				this.complete();
				return;
			}

			function onConfirm(image, message) {
				if (_this.options.debug && hasConsole) {
					console.log('confirm', image, message);
				}

				_this.progress(image);
				checkedCount++;
				if (checkedCount === length) {
					_this.complete();
				}
				return true; // bind once
			}

			for (var i = 0; i < length; i++) {
				var loadingImage = this.images[i];
				loadingImage.on('confirm', onConfirm);
				loadingImage.check();
			}
		};

		ImagesLoaded.prototype.progress = function(image) {
			this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
			this.emit('progress', this, image);
			if (this.jqDeferred) {
				this.jqDeferred.notify(this, image);
			}
		};

		ImagesLoaded.prototype.complete = function() {
			var eventName = this.hasAnyBroken ? 'fail' : 'done';
			this.isComplete = true;
			this.emit(eventName, this);
			this.emit('always', this);
			if (this.jqDeferred) {
				var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
				this.jqDeferred[jqMethod](this);
			}
		};

		// -------------------------- jquery -------------------------- //

		if ($) {
			$.fn.imagesLoaded = function(options, callback) {
				var instance = new ImagesLoaded(this, options, callback);
				return instance.jqDeferred.promise($(this));
			};
		}


		// --------------------------  -------------------------- //

		var cache = {};

		function LoadingImage(img) {
			this.img = img;
		}

		LoadingImage.prototype = new EventEmitter();

		LoadingImage.prototype.check = function() {
			// first check cached any previous images that have same src
			var cached = cache[this.img.src];
			if (cached) {
				this.useCached(cached);
				return;
			}
			// add this to cache
			cache[this.img.src] = this;

			// If complete is true and browser supports natural sizes,
			// try to check for image status manually.
			if (this.img.complete && this.img.naturalWidth !== undefined) {
				// report based on naturalWidth
				this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');
				return;
			}

			// If none of the checks above matched, simulate loading on detached element.
			var proxyImage = this.proxyImage = new Image();
			eventie.bind(proxyImage, 'load', this);
			eventie.bind(proxyImage, 'error', this);
			proxyImage.src = this.img.src;
		};

		LoadingImage.prototype.useCached = function(cached) {
			if (cached.isConfirmed) {
				this.confirm(cached.isLoaded, 'cached was confirmed');
			} else {
				var _this = this;
				cached.on('confirm', function(image) {
					_this.confirm(image.isLoaded, 'cache emitted confirmed');
					return true; // bind once
				});
			}
		};

		LoadingImage.prototype.confirm = function(isLoaded, message) {
			this.isConfirmed = true;
			this.isLoaded = isLoaded;
			this.emit('confirm', this, message);
		};

		// trigger specified handler for event type
		LoadingImage.prototype.handleEvent = function(event) {
			var method = 'on' + event.type;
			if (this[method]) {
				this[method](event);
			}
		};

		LoadingImage.prototype.onload = function() {
			this.confirm(true, 'onload');
			this.unbindProxyEvents();
		};

		LoadingImage.prototype.onerror = function() {
			this.confirm(false, 'onerror');
			this.unbindProxyEvents();
		};

		LoadingImage.prototype.unbindProxyEvents = function() {
			eventie.unbind(this.proxyImage, 'load', this);
			eventie.unbind(this.proxyImage, 'error', this);
		};

		// -----  ----- //

		return ImagesLoaded;
	}

	// -------------------------- transport -------------------------- //

	if (typeof define === 'function' && define.amd) {
		// AMD
		define([
				'eventEmitter',
				'eventie'
			],
			defineImagesLoaded);
	} else {
		// browser global
		window.imagesLoaded = defineImagesLoaded(
			window.EventEmitter,
			window.eventie
		);
	}

})(window);
/*classie.js*/
/*!
 * classie - class helper functions
 * from bonzo https://github.com/ded/bonzo
 * 
 * classie.has( elem, 'my-class' ) -> true/false
 * classie.add( elem, 'my-new-class' )
 * classie.remove( elem, 'my-unwanted-class' )
 * classie.toggle( elem, 'my-class' )
 */

/*jshint browser: true, strict: true, undef: true */
/*global define: false */

(function(window) {

	'use strict';

	// class helper functions from bonzo https://github.com/ded/bonzo

	function classReg(className) {
		return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
	}

	// classList support for class management
	// altho to be fair, the api sucks because it won't accept multiple classes at once
	var hasClass, addClass, removeClass;

	if ('classList' in document.documentElement) {
		hasClass = function(elem, c) {
			return elem.classList.contains(c);
		};
		addClass = function(elem, c) {
			elem.classList.add(c);
		};
		removeClass = function(elem, c) {
			elem.classList.remove(c);
		};
	} else {
		hasClass = function(elem, c) {
			return classReg(c).test(elem.className);
		};
		addClass = function(elem, c) {
			if (!hasClass(elem, c)) {
				elem.className = elem.className + ' ' + c;
			}
		};
		removeClass = function(elem, c) {
			elem.className = elem.className.replace(classReg(c), ' ');
		};
	}

	function toggleClass(elem, c) {
		var fn = hasClass(elem, c) ? removeClass : addClass;
		fn(elem, c);
	}

	var classie = {
		// full names
		hasClass: hasClass,
		addClass: addClass,
		removeClass: removeClass,
		toggleClass: toggleClass,
		// short names
		has: hasClass,
		add: addClass,
		remove: removeClass,
		toggle: toggleClass
	};

	// transport
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(classie);
	} else {
		// browser global
		window.classie = classie;
	}

})(window);

/*AnimOnScroll.js*/
/**
 * animOnScroll.js v1.0.0
 * http://www.codrops.com
 *
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * Copyright 2013, Codrops
 * http://www.codrops.com
 */
;
(function(window) {

	'use strict';

	var docElem = window.document.documentElement;

	function getViewportH() {
		var client = docElem['clientHeight'],
			inner = window['innerHeight'];

		if (client < inner)
			return inner;
		else
			return client;
	}

	function scrollY() {
		return window.pageYOffset || docElem.scrollTop;
	}

	// http://stackoverflow.com/a/5598797/989439
	function getOffset(el) {
		var offsetTop = 0,
			offsetLeft = 0;
		do {
			if (!isNaN(el.offsetTop)) {
				offsetTop += el.offsetTop;
			}
			if (!isNaN(el.offsetLeft)) {
				offsetLeft += el.offsetLeft;
			}
		} while (el = el.offsetParent)

		return {
			top: offsetTop,
			left: offsetLeft
		}
	}

	function inViewport(el, h) {
		var elH = el.offsetHeight,
			scrolled = scrollY(),
			viewed = scrolled + getViewportH(),
			elTop = getOffset(el).top,
			elBottom = elTop + elH,
			// if 0, the element is considered in the viewport as soon as it enters.
			// if 1, the element is considered in the viewport only when it's fully inside
			// value in percentage (1 >= h >= 0)
			h = h || 0;

		return (elTop + elH * h) <= viewed && (elBottom - elH * h) >= scrolled;
	}

	function extend(a, b) {
		for (var key in b) {
			if (b.hasOwnProperty(key)) {
				a[key] = b[key];
			}
		}
		return a;
	}

	function AnimOnScroll(el, options) {
		this.el = el;
		this.options = extend(this.defaults, options);
		this._init();
	}

	AnimOnScroll.prototype = {
		defaults: {
			// Minimum and a maximum duration of the animation (random value is chosen)
			minDuration: 0,
			maxDuration: 0,
			// The viewportFactor defines how much of the appearing item has to be visible in order to trigger the animation
			// if we'd use a value of 0, this would mean that it would add the animation class as soon as the item is in the viewport. 
			// If we were to use the value of 1, the animation would only be triggered when we see all of the item in the viewport (100% of it)
			viewportFactor: 0,
			MasonryOk: true
		},
		_init: function() {
			this.items = Array.prototype.slice.call(document.querySelectorAll('#' + this.el.id + ' > li'));
			this.itemsCount = this.items.length;
			this.itemsRenderedCount = 0;
			this.didScroll = false;

			var self = this;

			imagesLoaded(this.el, function() {

				// initialize masonry
				var msnry = new Masonry(self.el, {
					itemSelector: 'li',
					transitionDuration: 0
				});
				window.metgrid = msnry;

				if (Modernizr.cssanimations) {
					// the items already shown...
					self.items.forEach(function(el, i) {
						if (inViewport(el)) {
							self._checkTotalRendered();
							classie.add(el, 'shown');
						}
					});

					// animate on scroll the items inside the viewport
					window.addEventListener('scroll', function() {
						self._onScrollFn();
					}, false);
					window.addEventListener('resize', function() {
						self._resizeHandler();
					}, false);
				}

			});
		},
		_onScrollFn: function() {
			var self = this;
			if (!this.didScroll) {
				this.didScroll = true;
				setTimeout(function() {
					self._scrollPage();
				}, 60);
			}
		},
		_scrollPage: function() {
			var self = this;
			this.items.forEach(function(el, i) {
				if (!classie.has(el, 'shown') && !classie.has(el, 'animate') && inViewport(el, self.options.viewportFactor)) {
					setTimeout(function() {
						var perspY = scrollY() + getViewportH() / 2;
						self.el.style.WebkitPerspectiveOrigin = '50% ' + perspY + 'px';
						self.el.style.MozPerspectiveOrigin = '50% ' + perspY + 'px';
						self.el.style.perspectiveOrigin = '50% ' + perspY + 'px';

						self._checkTotalRendered();

						if (self.options.minDuration && self.options.maxDuration) {
							var randDuration = (Math.random() * (self.options.maxDuration - self.options.minDuration) + self.options.minDuration) +
								's';
							el.style.WebkitAnimationDuration = randDuration;
							el.style.MozAnimationDuration = randDuration;
							el.style.animationDuration = randDuration;
						}

						classie.add(el, 'animate');
					}, 25);
				}
			});
			this.didScroll = false;
		},
		_resizeHandler: function() {
			var self = this;

			function delayed() {
				self._scrollPage();
				self.resizeTimeout = null;
			}
			if (this.resizeTimeout) {
				clearTimeout(this.resizeTimeout);
			}
			this.resizeTimeout = setTimeout(delayed, 1000);
		},
		_checkTotalRendered: function() {
			++this.itemsRenderedCount;
			if (this.itemsRenderedCount === this.itemsCount) {
				window.removeEventListener('scroll', this._onScrollFn);
			}
		}
	}

	// add to global namespace
	window.AnimOnScroll = AnimOnScroll;

})(window);
/*swiper-3.3.1.jquery.min.js*/
/**
 * Swiper 3.3.1
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * 
 * http://www.idangero.us/swiper/
 * 
 * Copyright 2016, Vladimir Kharlampidi
 * The iDangero.us
 * http://www.idangero.us/
 * 
 * Licensed under MIT
 * 
 * Released on: February 7, 2016
 */
! function() {
	"use strict";

	function e(e) {
		e.fn.swiper = function(a) {
			var s;
			return e(this).each(function() {
				var e = new t(this, a);
				s || (s = e)
			}), s
		}
	}
	var a, t = function(e, s) {
		function r(e) {
			return Math.floor(e)
		}

		function i() {
			y.autoplayTimeoutId = setTimeout(function() {
				y.params.loop ? (y.fixLoop(), y._slideNext(), y.emit("onAutoplay", y)) : y.isEnd ? s.autoplayStopOnLast ? y.stopAutoplay() :
					(y._slideTo(0), y.emit("onAutoplay", y)) : (y._slideNext(), y.emit("onAutoplay", y))
			}, y.params.autoplay)
		}

		function n(e, t) {
			var s = a(e.target);
			if (!s.is(t))
				if ("string" == typeof t) s = s.parents(t);
				else if (t.nodeType) {
				var r;
				return s.parents().each(function(e, a) {
					a === t && (r = t)
				}), r ? t : void 0
			}
			if (0 !== s.length) return s[0]
		}

		function o(e, a) {
			a = a || {};
			var t = window.MutationObserver || window.WebkitMutationObserver,
				s = new t(function(e) {
					e.forEach(function(e) {
						y.onResize(!0), y.emit("onObserverUpdate", y, e)
					})
				});
			s.observe(e, {
				attributes: "undefined" == typeof a.attributes ? !0 : a.attributes,
				childList: "undefined" == typeof a.childList ? !0 : a.childList,
				characterData: "undefined" == typeof a.characterData ? !0 : a.characterData
			}), y.observers.push(s)
		}

		function l(e) {
			e.originalEvent && (e = e.originalEvent);
			var a = e.keyCode || e.charCode;
			if (!y.params.allowSwipeToNext && (y.isHorizontal() && 39 === a || !y.isHorizontal() && 40 === a)) return !1;
			if (!y.params.allowSwipeToPrev && (y.isHorizontal() && 37 === a || !y.isHorizontal() && 38 === a)) return !1;
			if (!(e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || document.activeElement && document.activeElement.nodeName &&
					("input" === document.activeElement.nodeName.toLowerCase() || "textarea" === document.activeElement.nodeName.toLowerCase())
				)) {
				if (37 === a || 39 === a || 38 === a || 40 === a) {
					var t = !1;
					if (y.container.parents(".swiper-slide").length > 0 && 0 === y.container.parents(".swiper-slide-active").length)
						return;
					var s = {
							left: window.pageXOffset,
							top: window.pageYOffset
						},
						r = window.innerWidth,
						i = window.innerHeight,
						n = y.container.offset();
					y.rtl && (n.left = n.left - y.container[0].scrollLeft);
					for (var o = [
							[n.left, n.top],
							[n.left + y.width, n.top],
							[n.left, n.top + y.height],
							[n.left + y.width, n.top + y.height]
						], l = 0; l < o.length; l++) {
						var p = o[l];
						p[0] >= s.left && p[0] <= s.left + r && p[1] >= s.top && p[1] <= s.top + i && (t = !0)
					}
					if (!t) return
				}
				y.isHorizontal() ? ((37 === a || 39 === a) && (e.preventDefault ? e.preventDefault() : e.returnValue = !1), (39 ===
						a && !y.rtl || 37 === a && y.rtl) && y.slideNext(), (37 === a && !y.rtl || 39 === a && y.rtl) && y.slidePrev()) :
					((38 === a || 40 === a) && (e.preventDefault ? e.preventDefault() : e.returnValue = !1), 40 === a && y.slideNext(),
						38 === a && y.slidePrev())
			}
		}

		function p(e) {
			e.originalEvent && (e = e.originalEvent);
			var a = y.mousewheel.event,
				t = 0,
				s = y.rtl ? -1 : 1;
			if ("mousewheel" === a)
				if (y.params.mousewheelForceToAxis)
					if (y.isHorizontal()) {
						if (!(Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY))) return;
						t = e.wheelDeltaX * s
					} else {
						if (!(Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX))) return;
						t = e.wheelDeltaY
					}
			else t = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? -e.wheelDeltaX * s : -e.wheelDeltaY;
			else if ("DOMMouseScroll" === a) t = -e.detail;
			else if ("wheel" === a)
				if (y.params.mousewheelForceToAxis)
					if (y.isHorizontal()) {
						if (!(Math.abs(e.deltaX) > Math.abs(e.deltaY))) return;
						t = -e.deltaX * s
					} else {
						if (!(Math.abs(e.deltaY) > Math.abs(e.deltaX))) return;
						t = -e.deltaY
					}
			else t = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? -e.deltaX * s : -e.deltaY;
			if (0 !== t) {
				if (y.params.mousewheelInvert && (t = -t), y.params.freeMode) {
					var r = y.getWrapperTranslate() + t * y.params.mousewheelSensitivity,
						i = y.isBeginning,
						n = y.isEnd;
					if (r >= y.minTranslate() && (r = y.minTranslate()), r <= y.maxTranslate() && (r = y.maxTranslate()), y.setWrapperTransition(
							0), y.setWrapperTranslate(r), y.updateProgress(), y.updateActiveIndex(), (!i && y.isBeginning || !n && y.isEnd) &&
						y.updateClasses(), y.params.freeModeSticky ? (clearTimeout(y.mousewheel.timeout), y.mousewheel.timeout =
							setTimeout(function() {
								y.slideReset()
							}, 300)) : y.params.lazyLoading && y.lazy && y.lazy.load(), 0 === r || r === y.maxTranslate()) return
				} else {
					if ((new window.Date).getTime() - y.mousewheel.lastScrollTime > 60)
						if (0 > t)
							if (y.isEnd && !y.params.loop || y.animating) {
								if (y.params.mousewheelReleaseOnEdges) return !0
							} else y.slideNext();
					else if (y.isBeginning && !y.params.loop || y.animating) {
						if (y.params.mousewheelReleaseOnEdges) return !0
					} else y.slidePrev();
					y.mousewheel.lastScrollTime = (new window.Date).getTime()
				}
				return y.params.autoplay && y.stopAutoplay(), e.preventDefault ? e.preventDefault() : e.returnValue = !1, !1
			}
		}

		function d(e, t) {
			e = a(e);
			var s, r, i, n = y.rtl ? -1 : 1;
			s = e.attr("data-swiper-parallax") || "0", r = e.attr("data-swiper-parallax-x"), i = e.attr(
					"data-swiper-parallax-y"), r || i ? (r = r || "0", i = i || "0") : y.isHorizontal() ? (r = s, i = "0") : (i = s,
					r = "0"), r = r.indexOf("%") >= 0 ? parseInt(r, 10) * t * n + "%" : r * t * n + "px", i = i.indexOf("%") >= 0 ?
				parseInt(i, 10) * t + "%" : i * t + "px", e.transform("translate3d(" + r + ", " + i + ",0px)")
		}

		function u(e) {
			return 0 !== e.indexOf("on") && (e = e[0] !== e[0].toUpperCase() ? "on" + e[0].toUpperCase() + e.substring(1) :
				"on" + e), e
		}
		if (!(this instanceof t)) return new t(e, s);
		var c = {
				direction: "horizontal",
				touchEventsTarget: "container",
				initialSlide: 0,
				speed: 300,
				autoplay: !1,
				autoplayDisableOnInteraction: !0,
				autoplayStopOnLast: !1,
				iOSEdgeSwipeDetection: !1,
				iOSEdgeSwipeThreshold: 20,
				freeMode: !1,
				freeModeMomentum: !0,
				freeModeMomentumRatio: 1,
				freeModeMomentumBounce: !0,
				freeModeMomentumBounceRatio: 1,
				freeModeSticky: !1,
				freeModeMinimumVelocity: .02,
				autoHeight: !1,
				setWrapperSize: !1,
				virtualTranslate: !1,
				effect: "slide",
				coverflow: {
					rotate: 50,
					stretch: 0,
					depth: 100,
					modifier: 1,
					slideShadows: !0
				},
				flip: {
					slideShadows: !0,
					limitRotation: !0
				},
				cube: {
					slideShadows: !0,
					shadow: !0,
					shadowOffset: 20,
					shadowScale: .94
				},
				fade: {
					crossFade: !1
				},
				parallax: !1,
				scrollbar: null,
				scrollbarHide: !0,
				scrollbarDraggable: !1,
				scrollbarSnapOnRelease: !1,
				keyboardControl: !1,
				mousewheelControl: !1,
				mousewheelReleaseOnEdges: !1,
				mousewheelInvert: !1,
				mousewheelForceToAxis: !1,
				mousewheelSensitivity: 1,
				hashnav: !1,
				breakpoints: void 0,
				spaceBetween: 0,
				slidesPerView: 1,
				slidesPerColumn: 1,
				slidesPerColumnFill: "column",
				slidesPerGroup: 1,
				centeredSlides: !1,
				slidesOffsetBefore: 0,
				slidesOffsetAfter: 0,
				roundLengths: !1,
				touchRatio: 1,
				touchAngle: 45,
				simulateTouch: !0,
				shortSwipes: !0,
				longSwipes: !0,
				longSwipesRatio: .5,
				longSwipesMs: 300,
				followFinger: !0,
				onlyExternal: !1,
				threshold: 0,
				touchMoveStopPropagation: !0,
				uniqueNavElements: !0,
				pagination: null,
				paginationElement: "span",
				paginationClickable: !1,
				paginationHide: !1,
				paginationBulletRender: null,
				paginationProgressRender: null,
				paginationFractionRender: null,
				paginationCustomRender: null,
				paginationType: "bullets",
				resistance: !0,
				resistanceRatio: .85,
				nextButton: null,
				prevButton: null,
				watchSlidesProgress: !1,
				watchSlidesVisibility: !1,
				grabCursor: !1,
				preventClicks: !0,
				preventClicksPropagation: !0,
				slideToClickedSlide: !1,
				lazyLoading: !1,
				lazyLoadingInPrevNext: !1,
				lazyLoadingInPrevNextAmount: 1,
				lazyLoadingOnTransitionStart: !1,
				preloadImages: !0,
				updateOnImagesReady: !0,
				loop: !1,
				loopAdditionalSlides: 0,
				loopedSlides: null,
				control: void 0,
				controlInverse: !1,
				controlBy: "slide",
				allowSwipeToPrev: !0,
				allowSwipeToNext: !0,
				swipeHandler: null,
				noSwiping: !0,
				noSwipingClass: "swiper-no-swiping",
				slideClass: "swiper-slide",
				slideActiveClass: "swiper-slide-active",
				slideVisibleClass: "swiper-slide-visible",
				slideDuplicateClass: "swiper-slide-duplicate",
				slideNextClass: "swiper-slide-next",
				slidePrevClass: "swiper-slide-prev",
				wrapperClass: "swiper-wrapper",
				bulletClass: "swiper-pagination-bullet",
				bulletActiveClass: "swiper-pagination-bullet-active",
				buttonDisabledClass: "swiper-button-disabled",
				paginationCurrentClass: "swiper-pagination-current",
				paginationTotalClass: "swiper-pagination-total",
				paginationHiddenClass: "swiper-pagination-hidden",
				paginationProgressbarClass: "swiper-pagination-progressbar",
				observer: !1,
				observeParents: !1,
				a11y: !1,
				prevSlideMessage: "Previous slide",
				nextSlideMessage: "Next slide",
				firstSlideMessage: "This is the first slide",
				lastSlideMessage: "This is the last slide",
				paginationBulletMessage: "Go to slide {{index}}",
				runCallbacksOnInit: !0
			},
			m = s && s.virtualTranslate;
		s = s || {};
		var f = {};
		for (var g in s)
			if ("object" != typeof s[g] || null === s[g] || (s[g].nodeType || s[g] === window || s[g] === document ||
					"undefined" != typeof Dom7 && s[g] instanceof Dom7 || "undefined" != typeof jQuery && s[g] instanceof jQuery)) f[
				g] = s[g];
			else {
				f[g] = {};
				for (var h in s[g]) f[g][h] = s[g][h]
			} for (var v in c)
			if ("undefined" == typeof s[v]) s[v] = c[v];
			else if ("object" == typeof s[v])
			for (var w in c[v]) "undefined" == typeof s[v][w] && (s[v][w] = c[v][w]);
		var y = this;
		if (y.params = s, y.originalParams = f, y.classNames = [], "undefined" != typeof a && "undefined" != typeof Dom7 &&
			(a = Dom7), ("undefined" != typeof a || (a = "undefined" == typeof Dom7 ? window.Dom7 || window.Zepto || window.jQuery :
				Dom7)) && (y.$ = a, y.currentBreakpoint = void 0, y.getActiveBreakpoint = function() {
				if (!y.params.breakpoints) return !1;
				var e, a = !1,
					t = [];
				for (e in y.params.breakpoints) y.params.breakpoints.hasOwnProperty(e) && t.push(e);
				t.sort(function(e, a) {
					return parseInt(e, 10) > parseInt(a, 10)
				});
				for (var s = 0; s < t.length; s++) e = t[s], e >= window.innerWidth && !a && (a = e);
				return a || "max"
			}, y.setBreakpoint = function() {
				var e = y.getActiveBreakpoint();
				if (e && y.currentBreakpoint !== e) {
					var a = e in y.params.breakpoints ? y.params.breakpoints[e] : y.originalParams,
						t = y.params.loop && a.slidesPerView !== y.params.slidesPerView;
					for (var s in a) y.params[s] = a[s];
					y.currentBreakpoint = e, t && y.destroyLoop && y.reLoop(!0)
				}
			}, y.params.breakpoints && y.setBreakpoint(), y.container = a(e), 0 !== y.container.length)) {
			if (y.container.length > 1) {
				var b = [];
				return y.container.each(function() {
					b.push(new t(this, s))
				}), b
			}
			y.container[0].swiper = y, y.container.data("swiper", y), y.classNames.push("swiper-container-" + y.params.direction),
				y.params.freeMode && y.classNames.push("swiper-container-free-mode"), y.support.flexbox || (y.classNames.push(
					"swiper-container-no-flexbox"), y.params.slidesPerColumn = 1), y.params.autoHeight && y.classNames.push(
					"swiper-container-autoheight"), (y.params.parallax || y.params.watchSlidesVisibility) && (y.params.watchSlidesProgress = !
					0), ["cube", "coverflow", "flip"].indexOf(y.params.effect) >= 0 && (y.support.transforms3d ? (y.params.watchSlidesProgress = !
					0, y.classNames.push("swiper-container-3d")) : y.params.effect = "slide"), "slide" !== y.params.effect && y.classNames
				.push("swiper-container-" + y.params.effect), "cube" === y.params.effect && (y.params.resistanceRatio = 0, y.params
					.slidesPerView = 1, y.params.slidesPerColumn = 1, y.params.slidesPerGroup = 1, y.params.centeredSlides = !1, y.params
					.spaceBetween = 0, y.params.virtualTranslate = !0, y.params.setWrapperSize = !1), ("fade" === y.params.effect ||
					"flip" === y.params.effect) && (y.params.slidesPerView = 1, y.params.slidesPerColumn = 1, y.params.slidesPerGroup =
					1, y.params.watchSlidesProgress = !0, y.params.spaceBetween = 0, y.params.setWrapperSize = !1, "undefined" ==
					typeof m && (y.params.virtualTranslate = !0)), y.params.grabCursor && y.support.touch && (y.params.grabCursor = !
					1), y.wrapper = y.container.children("." + y.params.wrapperClass), y.params.pagination && (y.paginationContainer =
					a(y.params.pagination), y.params.uniqueNavElements && "string" == typeof y.params.pagination && y.paginationContainer
					.length > 1 && 1 === y.container.find(y.params.pagination).length && (y.paginationContainer = y.container.find(y.params
						.pagination)), "bullets" === y.params.paginationType && y.params.paginationClickable ? y.paginationContainer.addClass(
						"swiper-pagination-clickable") : y.params.paginationClickable = !1, y.paginationContainer.addClass(
						"swiper-pagination-" + y.params.paginationType)), (y.params.nextButton || y.params.prevButton) && (y.params.nextButton &&
					(y.nextButton = a(y.params.nextButton), y.params.uniqueNavElements && "string" == typeof y.params.nextButton && y
						.nextButton.length > 1 && 1 === y.container.find(y.params.nextButton).length && (y.nextButton = y.container.find(
							y.params.nextButton))), y.params.prevButton && (y.prevButton = a(y.params.prevButton), y.params.uniqueNavElements &&
						"string" == typeof y.params.prevButton && y.prevButton.length > 1 && 1 === y.container.find(y.params.prevButton)
						.length && (y.prevButton = y.container.find(y.params.prevButton)))), y.isHorizontal = function() {
					return "horizontal" === y.params.direction
				}, y.rtl = y.isHorizontal() && ("rtl" === y.container[0].dir.toLowerCase() || "rtl" === y.container.css(
					"direction")), y.rtl && y.classNames.push("swiper-container-rtl"), y.rtl && (y.wrongRTL = "-webkit-box" === y.wrapper
					.css("display")), y.params.slidesPerColumn > 1 && y.classNames.push("swiper-container-multirow"), y.device.android &&
				y.classNames.push("swiper-container-android"), y.container.addClass(y.classNames.join(" ")), y.translate = 0, y.progress =
				0, y.velocity = 0, y.lockSwipeToNext = function() {
					y.params.allowSwipeToNext = !1
				}, y.lockSwipeToPrev = function() {
					y.params.allowSwipeToPrev = !1
				}, y.lockSwipes = function() {
					y.params.allowSwipeToNext = y.params.allowSwipeToPrev = !1
				}, y.unlockSwipeToNext = function() {
					y.params.allowSwipeToNext = !0
				}, y.unlockSwipeToPrev = function() {
					y.params.allowSwipeToPrev = !0
				}, y.unlockSwipes = function() {
					y.params.allowSwipeToNext = y.params.allowSwipeToPrev = !0
				}, y.params.grabCursor && (y.container[0].style.cursor = "move", y.container[0].style.cursor = "-webkit-grab", y.container[
					0].style.cursor = "-moz-grab", y.container[0].style.cursor = "grab"), y.imagesToLoad = [], y.imagesLoaded = 0, y.loadImage =
				function(e, a, t, s, r) {
					function i() {
						r && r()
					}
					var n;
					e.complete && s ? i() : a ? (n = new window.Image, n.onload = i, n.onerror = i, t && (n.srcset = t), a && (n.src =
						a)) : i()
				}, y.preloadImages = function() {
					function e() {
						"undefined" != typeof y && null !== y && (void 0 !== y.imagesLoaded && y.imagesLoaded++, y.imagesLoaded === y.imagesToLoad
							.length && (y.params.updateOnImagesReady && y.update(), y.emit("onImagesReady", y)))
					}
					y.imagesToLoad = y.container.find("img");
					for (var a = 0; a < y.imagesToLoad.length; a++) y.loadImage(y.imagesToLoad[a], y.imagesToLoad[a].currentSrc || y.imagesToLoad[
						a].getAttribute("src"), y.imagesToLoad[a].srcset || y.imagesToLoad[a].getAttribute("srcset"), !0, e)
				}, y.autoplayTimeoutId = void 0, y.autoplaying = !1, y.autoplayPaused = !1, y.startAutoplay = function() {
					return "undefined" != typeof y.autoplayTimeoutId ? !1 : y.params.autoplay ? y.autoplaying ? !1 : (y.autoplaying = !
						0, y.emit("onAutoplayStart", y), void i()) : !1
				}, y.stopAutoplay = function(e) {
					y.autoplayTimeoutId && (y.autoplayTimeoutId && clearTimeout(y.autoplayTimeoutId), y.autoplaying = !1, y.autoplayTimeoutId =
						void 0, y.emit("onAutoplayStop", y))
				}, y.pauseAutoplay = function(e) {
					y.autoplayPaused || (y.autoplayTimeoutId && clearTimeout(y.autoplayTimeoutId), y.autoplayPaused = !0, 0 === e ? (
						y.autoplayPaused = !1, i()) : y.wrapper.transitionEnd(function() {
						y && (y.autoplayPaused = !1, y.autoplaying ? i() : y.stopAutoplay())
					}))
				}, y.minTranslate = function() {
					return -y.snapGrid[0]
				}, y.maxTranslate = function() {
					return -y.snapGrid[y.snapGrid.length - 1]
				}, y.updateAutoHeight = function() {
					var e = y.slides.eq(y.activeIndex)[0];
					if ("undefined" != typeof e) {
						var a = e.offsetHeight;
						a && y.wrapper.css("height", a + "px")
					}
				}, y.updateContainerSize = function() {
					var e, a;
					e = "undefined" != typeof y.params.width ? y.params.width : y.container[0].clientWidth, a = "undefined" != typeof y
						.params.height ? y.params.height : y.container[0].clientHeight, 0 === e && y.isHorizontal() || 0 === a && !y.isHorizontal() ||
						(e = e - parseInt(y.container.css("padding-left"), 10) - parseInt(y.container.css("padding-right"), 10), a = a -
							parseInt(y.container.css("padding-top"), 10) - parseInt(y.container.css("padding-bottom"), 10), y.width = e, y.height =
							a, y.size = y.isHorizontal() ? y.width : y.height)
				}, y.updateSlidesSize = function() {
					y.slides = y.wrapper.children("." + y.params.slideClass), y.snapGrid = [], y.slidesGrid = [], y.slidesSizesGrid = [];
					var e, a = y.params.spaceBetween,
						t = -y.params.slidesOffsetBefore,
						s = 0,
						i = 0;
					if ("undefined" != typeof y.size) {
						"string" == typeof a && a.indexOf("%") >= 0 && (a = parseFloat(a.replace("%", "")) / 100 * y.size), y.virtualSize = -
							a, y.rtl ? y.slides.css({
								marginLeft: "",
								marginTop: ""
							}) : y.slides.css({
								marginRight: "",
								marginBottom: ""
							});
						var n;
						y.params.slidesPerColumn > 1 && (n = Math.floor(y.slides.length / y.params.slidesPerColumn) === y.slides.length /
							y.params.slidesPerColumn ? y.slides.length : Math.ceil(y.slides.length / y.params.slidesPerColumn) * y.params.slidesPerColumn,
							"auto" !== y.params.slidesPerView && "row" === y.params.slidesPerColumnFill && (n = Math.max(n, y.params.slidesPerView *
								y.params.slidesPerColumn)));
						var o, l = y.params.slidesPerColumn,
							p = n / l,
							d = p - (y.params.slidesPerColumn * p - y.slides.length);
						for (e = 0; e < y.slides.length; e++) {
							o = 0;
							var u = y.slides.eq(e);
							if (y.params.slidesPerColumn > 1) {
								var c, m, f;
								"column" === y.params.slidesPerColumnFill ? (m = Math.floor(e / l), f = e - m * l, (m > d || m === d && f ===
									l - 1) && ++f >= l && (f = 0, m++), c = m + f * n / l, u.css({
									"-webkit-box-ordinal-group": c,
									"-moz-box-ordinal-group": c,
									"-ms-flex-order": c,
									"-webkit-order": c,
									order: c
								})) : (f = Math.floor(e / p), m = e - f * p), u.css({
									"margin-top": 0 !== f && y.params.spaceBetween && y.params.spaceBetween + "px"
								}).attr("data-swiper-column", m).attr("data-swiper-row", f)
							}
							"none" !== u.css("display") && ("auto" === y.params.slidesPerView ? (o = y.isHorizontal() ? u.outerWidth(!0) :
									u.outerHeight(!0), y.params.roundLengths && (o = r(o))) : (o = (y.size - (y.params.slidesPerView - 1) * a) /
									y.params.slidesPerView, y.params.roundLengths && (o = r(o)), y.isHorizontal() ? y.slides[e].style.width = o +
									"px" : y.slides[e].style.height = o + "px"), y.slides[e].swiperSlideSize = o, y.slidesSizesGrid.push(o), y.params
								.centeredSlides ? (t = t + o / 2 + s / 2 + a, 0 === e && (t = t - y.size / 2 - a), Math.abs(t) < .001 && (t =
									0), i % y.params.slidesPerGroup === 0 && y.snapGrid.push(t), y.slidesGrid.push(t)) : (i % y.params.slidesPerGroup ===
									0 && y.snapGrid.push(t), y.slidesGrid.push(t), t = t + o + a), y.virtualSize += o + a, s = o, i++)
						}
						y.virtualSize = Math.max(y.virtualSize, y.size) + y.params.slidesOffsetAfter;
						var g;
						if (y.rtl && y.wrongRTL && ("slide" === y.params.effect || "coverflow" === y.params.effect) && y.wrapper.css({
								width: y.virtualSize + y.params.spaceBetween + "px"
							}), (!y.support.flexbox || y.params.setWrapperSize) && (y.isHorizontal() ? y.wrapper.css({
								width: y.virtualSize + y.params.spaceBetween + "px"
							}) : y.wrapper.css({
								height: y.virtualSize + y.params.spaceBetween + "px"
							})), y.params.slidesPerColumn > 1 && (y.virtualSize = (o + y.params.spaceBetween) * n, y.virtualSize = Math.ceil(
								y.virtualSize / y.params.slidesPerColumn) - y.params.spaceBetween, y.wrapper.css({
								width: y.virtualSize + y.params.spaceBetween + "px"
							}), y.params.centeredSlides)) {
							for (g = [], e = 0; e < y.snapGrid.length; e++) y.snapGrid[e] < y.virtualSize + y.snapGrid[0] && g.push(y.snapGrid[
								e]);
							y.snapGrid = g
						}
						if (!y.params.centeredSlides) {
							for (g = [], e = 0; e < y.snapGrid.length; e++) y.snapGrid[e] <= y.virtualSize - y.size && g.push(y.snapGrid[e]);
							y.snapGrid = g, Math.floor(y.virtualSize - y.size) - Math.floor(y.snapGrid[y.snapGrid.length - 1]) > 1 && y.snapGrid
								.push(y.virtualSize - y.size)
						}
						0 === y.snapGrid.length && (y.snapGrid = [0]), 0 !== y.params.spaceBetween && (y.isHorizontal() ? y.rtl ? y.slides
							.css({
								marginLeft: a + "px"
							}) : y.slides.css({
								marginRight: a + "px"
							}) : y.slides.css({
								marginBottom: a + "px"
							})), y.params.watchSlidesProgress && y.updateSlidesOffset()
					}
				}, y.updateSlidesOffset = function() {
					for (var e = 0; e < y.slides.length; e++) y.slides[e].swiperSlideOffset = y.isHorizontal() ? y.slides[e].offsetLeft :
						y.slides[e].offsetTop
				}, y.updateSlidesProgress = function(e) {
					if ("undefined" == typeof e && (e = y.translate || 0), 0 !== y.slides.length) {
						"undefined" == typeof y.slides[0].swiperSlideOffset && y.updateSlidesOffset();
						var a = -e;
						y.rtl && (a = e), y.slides.removeClass(y.params.slideVisibleClass);
						for (var t = 0; t < y.slides.length; t++) {
							var s = y.slides[t],
								r = (a - s.swiperSlideOffset) / (s.swiperSlideSize + y.params.spaceBetween);
							if (y.params.watchSlidesVisibility) {
								var i = -(a - s.swiperSlideOffset),
									n = i + y.slidesSizesGrid[t],
									o = i >= 0 && i < y.size || n > 0 && n <= y.size || 0 >= i && n >= y.size;
								o && y.slides.eq(t).addClass(y.params.slideVisibleClass)
							}
							s.progress = y.rtl ? -r : r
						}
					}
				}, y.updateProgress = function(e) {
					"undefined" == typeof e && (e = y.translate || 0);
					var a = y.maxTranslate() - y.minTranslate(),
						t = y.isBeginning,
						s = y.isEnd;
					0 === a ? (y.progress = 0, y.isBeginning = y.isEnd = !0) : (y.progress = (e - y.minTranslate()) / a, y.isBeginning =
							y.progress <= 0, y.isEnd = y.progress >= 1), y.isBeginning && !t && y.emit("onReachBeginning", y), y.isEnd && !
						s && y.emit("onReachEnd", y), y.params.watchSlidesProgress && y.updateSlidesProgress(e), y.emit("onProgress", y,
							y.progress)
				}, y.updateActiveIndex = function() {
					var e, a, t, s = y.rtl ? y.translate : -y.translate;
					for (a = 0; a < y.slidesGrid.length; a++) "undefined" != typeof y.slidesGrid[a + 1] ? s >= y.slidesGrid[a] && s <
						y.slidesGrid[a + 1] - (y.slidesGrid[a + 1] - y.slidesGrid[a]) / 2 ? e = a : s >= y.slidesGrid[a] && s < y.slidesGrid[
							a + 1] && (e = a + 1) : s >= y.slidesGrid[a] && (e = a);
					(0 > e || "undefined" == typeof e) && (e = 0), t = Math.floor(e / y.params.slidesPerGroup), t >= y.snapGrid.length &&
						(t = y.snapGrid.length - 1), e !== y.activeIndex && (y.snapIndex = t, y.previousIndex = y.activeIndex, y.activeIndex =
							e, y.updateClasses())
				}, y.updateClasses = function() {
					y.slides.removeClass(y.params.slideActiveClass + " " + y.params.slideNextClass + " " + y.params.slidePrevClass);
					var e = y.slides.eq(y.activeIndex);
					e.addClass(y.params.slideActiveClass);
					var t = e.next("." + y.params.slideClass).addClass(y.params.slideNextClass);
					y.params.loop && 0 === t.length && y.slides.eq(0).addClass(y.params.slideNextClass);
					var s = e.prev("." + y.params.slideClass).addClass(y.params.slidePrevClass);
					if (y.params.loop && 0 === s.length && y.slides.eq(-1).addClass(y.params.slidePrevClass), y.paginationContainer &&
						y.paginationContainer.length > 0) {
						var r, i = y.params.loop ? Math.ceil((y.slides.length - 2 * y.loopedSlides) / y.params.slidesPerGroup) : y.snapGrid
							.length;
						if (y.params.loop ? (r = Math.ceil((y.activeIndex - y.loopedSlides) / y.params.slidesPerGroup), r > y.slides.length -
								1 - 2 * y.loopedSlides && (r -= y.slides.length - 2 * y.loopedSlides), r > i - 1 && (r -= i), 0 > r &&
								"bullets" !== y.params.paginationType && (r = i + r)) : r = "undefined" != typeof y.snapIndex ? y.snapIndex :
							y.activeIndex || 0, "bullets" === y.params.paginationType && y.bullets && y.bullets.length > 0 && (y.bullets.removeClass(
								y.params.bulletActiveClass), y.paginationContainer.length > 1 ? y.bullets.each(function() {
								a(this).index() === r && a(this).addClass(y.params.bulletActiveClass)
							}) : y.bullets.eq(r).addClass(y.params.bulletActiveClass)), "fraction" === y.params.paginationType && (y.paginationContainer
								.find("." + y.params.paginationCurrentClass).text(r + 1), y.paginationContainer.find("." + y.params.paginationTotalClass)
								.text(i)), "progress" === y.params.paginationType) {
							var n = (r + 1) / i,
								o = n,
								l = 1;
							y.isHorizontal() || (l = n, o = 1), y.paginationContainer.find("." + y.params.paginationProgressbarClass).transform(
								"translate3d(0,0,0) scaleX(" + o + ") scaleY(" + l + ")").transition(y.params.speed)
						}
						"custom" === y.params.paginationType && y.params.paginationCustomRender && (y.paginationContainer.html(y.params.paginationCustomRender(
							y, r + 1, i)), y.emit("onPaginationRendered", y, y.paginationContainer[0]))
					}
					y.params.loop || (y.params.prevButton && y.prevButton && y.prevButton.length > 0 && (y.isBeginning ? (y.prevButton
							.addClass(y.params.buttonDisabledClass), y.params.a11y && y.a11y && y.a11y.disable(y.prevButton)) : (y.prevButton
							.removeClass(y.params.buttonDisabledClass), y.params.a11y && y.a11y && y.a11y.enable(y.prevButton))), y.params
						.nextButton && y.nextButton && y.nextButton.length > 0 && (y.isEnd ? (y.nextButton.addClass(y.params.buttonDisabledClass),
							y.params.a11y && y.a11y && y.a11y.disable(y.nextButton)) : (y.nextButton.removeClass(y.params.buttonDisabledClass),
							y.params.a11y && y.a11y && y.a11y.enable(y.nextButton))))
				}, y.updatePagination = function() {
					if (y.params.pagination && y.paginationContainer && y.paginationContainer.length > 0) {
						var e = "";
						if ("bullets" === y.params.paginationType) {
							for (var a = y.params.loop ? Math.ceil((y.slides.length - 2 * y.loopedSlides) / y.params.slidesPerGroup) : y.snapGrid
									.length, t = 0; a > t; t++) e += y.params.paginationBulletRender ? y.params.paginationBulletRender(t, y.params
									.bulletClass) : "<" + y.params.paginationElement + ' class="' + y.params.bulletClass + '"></' + y.params.paginationElement +
								">";
							y.paginationContainer.html(e), y.bullets = y.paginationContainer.find("." + y.params.bulletClass), y.params.paginationClickable &&
								y.params.a11y && y.a11y && y.a11y.initPagination()
						}
						"fraction" === y.params.paginationType && (e = y.params.paginationFractionRender ? y.params.paginationFractionRender(
									y, y.params.paginationCurrentClass, y.params.paginationTotalClass) : '<span class="' + y.params.paginationCurrentClass +
								'"></span> / <span class="' + y.params.paginationTotalClass + '"></span>', y.paginationContainer.html(e)),
							"progress" === y.params.paginationType && (e = y.params.paginationProgressRender ? y.params.paginationProgressRender(
									y, y.params.paginationProgressbarClass) : '<span class="' + y.params.paginationProgressbarClass + '"></span>',
								y.paginationContainer.html(e)), "custom" !== y.params.paginationType && y.emit("onPaginationRendered", y, y.paginationContainer[
								0])
					}
				}, y.update = function(e) {
					function a() {
						s = Math.min(Math.max(y.translate, y.maxTranslate()), y.minTranslate()), y.setWrapperTranslate(s), y.updateActiveIndex(),
							y.updateClasses()
					}
					if (y.updateContainerSize(), y.updateSlidesSize(), y.updateProgress(), y.updatePagination(), y.updateClasses(), y
						.params.scrollbar && y.scrollbar && y.scrollbar.set(), e) {
						var t, s;
						y.controller && y.controller.spline && (y.controller.spline = void 0), y.params.freeMode ? (a(), y.params.autoHeight &&
							y.updateAutoHeight()) : (t = ("auto" === y.params.slidesPerView || y.params.slidesPerView > 1) && y.isEnd && !
							y.params.centeredSlides ? y.slideTo(y.slides.length - 1, 0, !1, !0) : y.slideTo(y.activeIndex, 0, !1, !0), t ||
							a())
					} else y.params.autoHeight && y.updateAutoHeight()
				}, y.onResize = function(e) {
					y.params.breakpoints && y.setBreakpoint();
					var a = y.params.allowSwipeToPrev,
						t = y.params.allowSwipeToNext;
					y.params.allowSwipeToPrev = y.params.allowSwipeToNext = !0, y.updateContainerSize(), y.updateSlidesSize(), (
							"auto" === y.params.slidesPerView || y.params.freeMode || e) && y.updatePagination(), y.params.scrollbar && y.scrollbar &&
						y.scrollbar.set(), y.controller && y.controller.spline && (y.controller.spline = void 0);
					var s = !1;
					if (y.params.freeMode) {
						var r = Math.min(Math.max(y.translate, y.maxTranslate()), y.minTranslate());
						y.setWrapperTranslate(r), y.updateActiveIndex(), y.updateClasses(), y.params.autoHeight && y.updateAutoHeight()
					} else y.updateClasses(), s = ("auto" === y.params.slidesPerView || y.params.slidesPerView > 1) && y.isEnd && !y.params
						.centeredSlides ? y.slideTo(y.slides.length - 1, 0, !1, !0) : y.slideTo(y.activeIndex, 0, !1, !0);
					y.params.lazyLoading && !s && y.lazy && y.lazy.load(), y.params.allowSwipeToPrev = a, y.params.allowSwipeToNext =
						t
				};
			var x = ["mousedown", "mousemove", "mouseup"];
			window.navigator.pointerEnabled ? x = ["pointerdown", "pointermove", "pointerup"] : window.navigator.msPointerEnabled &&
				(x = ["MSPointerDown", "MSPointerMove", "MSPointerUp"]), y.touchEvents = {
					start: y.support.touch || !y.params.simulateTouch ? "touchstart" : x[0],
					move: y.support.touch || !y.params.simulateTouch ? "touchmove" : x[1],
					end: y.support.touch || !y.params.simulateTouch ? "touchend" : x[2]
				}, (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) && ("container" === y.params.touchEventsTarget ?
					y.container : y.wrapper).addClass("swiper-wp8-" + y.params.direction), y.initEvents = function(e) {
					var a = e ? "off" : "on",
						t = e ? "removeEventListener" : "addEventListener",
						r = "container" === y.params.touchEventsTarget ? y.container[0] : y.wrapper[0],
						i = y.support.touch ? r : document,
						n = y.params.nested ? !0 : !1;
					y.browser.ie ? (r[t](y.touchEvents.start, y.onTouchStart, !1), i[t](y.touchEvents.move, y.onTouchMove, n), i[t](y
							.touchEvents.end, y.onTouchEnd, !1)) : (y.support.touch && (r[t](y.touchEvents.start, y.onTouchStart, !1), r[t]
								(y.touchEvents.move, y.onTouchMove, n), r[t](y.touchEvents.end, y.onTouchEnd, !1)), !s.simulateTouch || y.device
							.ios || y.device.android || (r[t]("mousedown", y.onTouchStart, !1), document[t]("mousemove", y.onTouchMove, n),
								document[t]("mouseup", y.onTouchEnd, !1))), window[t]("resize", y.onResize), y.params.nextButton && y.nextButton &&
						y.nextButton.length > 0 && (y.nextButton[a]("click", y.onClickNext), y.params.a11y && y.a11y && y.nextButton[a](
							"keydown", y.a11y.onEnterKey)), y.params.prevButton && y.prevButton && y.prevButton.length > 0 && (y.prevButton[
							a]("click", y.onClickPrev), y.params.a11y && y.a11y && y.prevButton[a]("keydown", y.a11y.onEnterKey)), y.params
						.pagination && y.params.paginationClickable && (y.paginationContainer[a]("click", "." + y.params.bulletClass, y.onClickIndex),
							y.params.a11y && y.a11y && y.paginationContainer[a]("keydown", "." + y.params.bulletClass, y.a11y.onEnterKey)),
						(y.params.preventClicks || y.params.preventClicksPropagation) && r[t]("click", y.preventClicks, !0)
				}, y.attachEvents = function() {
					y.initEvents()
				}, y.detachEvents = function() {
					y.initEvents(!0)
				}, y.allowClick = !0, y.preventClicks = function(e) {
					y.allowClick || (y.params.preventClicks && e.preventDefault(), y.params.preventClicksPropagation && y.animating &&
						(e.stopPropagation(), e.stopImmediatePropagation()))
				}, y.onClickNext = function(e) {
					e.preventDefault(), (!y.isEnd || y.params.loop) && y.slideNext()
				}, y.onClickPrev = function(e) {
					e.preventDefault(), (!y.isBeginning || y.params.loop) && y.slidePrev()
				}, y.onClickIndex = function(e) {
					e.preventDefault();
					var t = a(this).index() * y.params.slidesPerGroup;
					y.params.loop && (t += y.loopedSlides), y.slideTo(t)
				}, y.updateClickedSlide = function(e) {
					var t = n(e, "." + y.params.slideClass),
						s = !1;
					if (t)
						for (var r = 0; r < y.slides.length; r++) y.slides[r] === t && (s = !0);
					if (!t || !s) return y.clickedSlide = void 0, void(y.clickedIndex = void 0);
					if (y.clickedSlide = t, y.clickedIndex = a(t).index(), y.params.slideToClickedSlide && void 0 !== y.clickedIndex &&
						y.clickedIndex !== y.activeIndex) {
						var i, o = y.clickedIndex;
						if (y.params.loop) {
							if (y.animating) return;
							i = a(y.clickedSlide).attr("data-swiper-slide-index"), y.params.centeredSlides ? o < y.loopedSlides - y.params.slidesPerView /
								2 || o > y.slides.length - y.loopedSlides + y.params.slidesPerView / 2 ? (y.fixLoop(), o = y.wrapper.children(
										"." + y.params.slideClass + '[data-swiper-slide-index="' + i + '"]:not(.swiper-slide-duplicate)').eq(0).index(),
									setTimeout(function() {
										y.slideTo(o)
									}, 0)) : y.slideTo(o) : o > y.slides.length - y.params.slidesPerView ? (y.fixLoop(), o = y.wrapper.children(
										"." + y.params.slideClass + '[data-swiper-slide-index="' + i + '"]:not(.swiper-slide-duplicate)').eq(0).index(),
									setTimeout(function() {
										y.slideTo(o)
									}, 0)) : y.slideTo(o)
						} else y.slideTo(o)
					}
				};
			var T, S, C, z, M, P, I, k, E, B, D = "input, select, textarea, button",
				L = Date.now(),
				H = [];
			y.animating = !1, y.touches = {
				startX: 0,
				startY: 0,
				currentX: 0,
				currentY: 0,
				diff: 0
			};
			var G, A;
			if (y.onTouchStart = function(e) {
					if (e.originalEvent && (e = e.originalEvent), G = "touchstart" === e.type, G || !("which" in e) || 3 !== e.which) {
						if (y.params.noSwiping && n(e, "." + y.params.noSwipingClass)) return void(y.allowClick = !0);
						if (!y.params.swipeHandler || n(e, y.params.swipeHandler)) {
							var t = y.touches.currentX = "touchstart" === e.type ? e.targetTouches[0].pageX : e.pageX,
								s = y.touches.currentY = "touchstart" === e.type ? e.targetTouches[0].pageY : e.pageY;
							if (!(y.device.ios && y.params.iOSEdgeSwipeDetection && t <= y.params.iOSEdgeSwipeThreshold)) {
								if (T = !0, S = !1, C = !0, M = void 0, A = void 0, y.touches.startX = t, y.touches.startY = s, z = Date.now(),
									y.allowClick = !0, y.updateContainerSize(), y.swipeDirection = void 0, y.params.threshold > 0 && (k = !1),
									"touchstart" !== e.type) {
									var r = !0;
									a(e.target).is(D) && (r = !1), document.activeElement && a(document.activeElement).is(D) && document.activeElement
										.blur(), r && e.preventDefault()
								}
								y.emit("onTouchStart", y, e)
							}
						}
					}
				}, y.onTouchMove = function(e) {
					if (e.originalEvent && (e = e.originalEvent), !G || "mousemove" !== e.type) {
						if (e.preventedByNestedSwiper) return y.touches.startX = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX,
							void(y.touches.startY = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY);
						if (y.params.onlyExternal) return y.allowClick = !1, void(T && (y.touches.startX = y.touches.currentX =
							"touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX, y.touches.startY = y.touches.currentY =
							"touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY, z = Date.now()));
						if (G && document.activeElement && e.target === document.activeElement && a(e.target).is(D)) return S = !0, void(
							y.allowClick = !1);
						if (C && y.emit("onTouchMove", y, e), !(e.targetTouches && e.targetTouches.length > 1)) {
							if (y.touches.currentX = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX, y.touches.currentY =
								"touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY, "undefined" == typeof M) {
								var t = 180 * Math.atan2(Math.abs(y.touches.currentY - y.touches.startY), Math.abs(y.touches.currentX - y.touches
									.startX)) / Math.PI;
								M = y.isHorizontal() ? t > y.params.touchAngle : 90 - t > y.params.touchAngle
							}
							if (M && y.emit("onTouchMoveOpposite", y, e), "undefined" == typeof A && y.browser.ieTouch && (y.touches.currentX !==
									y.touches.startX || y.touches.currentY !== y.touches.startY) && (A = !0), T) {
								if (M) return void(T = !1);
								if (A || !y.browser.ieTouch) {
									y.allowClick = !1, y.emit("onSliderMove", y, e), e.preventDefault(), y.params.touchMoveStopPropagation && !y.params
										.nested && e.stopPropagation(), S || (s.loop && y.fixLoop(), I = y.getWrapperTranslate(), y.setWrapperTransition(
												0), y.animating && y.wrapper.trigger(
												"webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd"), y.params.autoplay &&
											y.autoplaying && (y.params.autoplayDisableOnInteraction ? y.stopAutoplay() : y.pauseAutoplay()), B = !1, y.params
											.grabCursor && (y.container[0].style.cursor = "move", y.container[0].style.cursor = "-webkit-grabbing", y.container[
												0].style.cursor = "-moz-grabbin", y.container[0].style.cursor = "grabbing")), S = !0;
									var r = y.touches.diff = y.isHorizontal() ? y.touches.currentX - y.touches.startX : y.touches.currentY - y.touches
										.startY;
									r *= y.params.touchRatio, y.rtl && (r = -r), y.swipeDirection = r > 0 ? "prev" : "next", P = r + I;
									var i = !0;
									if (r > 0 && P > y.minTranslate() ? (i = !1, y.params.resistance && (P = y.minTranslate() - 1 + Math.pow(-y.minTranslate() +
											I + r, y.params.resistanceRatio))) : 0 > r && P < y.maxTranslate() && (i = !1, y.params.resistance && (P =
											y.maxTranslate() + 1 - Math.pow(y.maxTranslate() - I - r, y.params.resistanceRatio))),
										i && (e.preventedByNestedSwiper = !0), !y.params.allowSwipeToNext && "next" === y.swipeDirection && I > P &&
										(P = I), !y.params.allowSwipeToPrev && "prev" === y.swipeDirection && P > I && (P = I), y.params.followFinger
									) {
										if (y.params.threshold > 0) {
											if (!(Math.abs(r) > y.params.threshold || k)) return void(P = I);
											if (!k) return k = !0, y.touches.startX = y.touches.currentX, y.touches.startY = y.touches.currentY, P = I,
												void(y.touches.diff = y.isHorizontal() ? y.touches.currentX - y.touches.startX : y.touches.currentY - y.touches
													.startY)
										}(y.params.freeMode || y.params.watchSlidesProgress) && y.updateActiveIndex(), y.params.freeMode && (0 ===
											H.length && H.push({
												position: y.touches[y.isHorizontal() ? "startX" : "startY"],
												time: z
											}), H.push({
												position: y.touches[y.isHorizontal() ? "currentX" : "currentY"],
												time: (new window.Date).getTime()
											})), y.updateProgress(P), y.setWrapperTranslate(P)
									}
								}
							}
						}
					}
				}, y.onTouchEnd = function(e) {
					if (e.originalEvent && (e = e.originalEvent), C && y.emit("onTouchEnd", y, e), C = !1, T) {
						y.params.grabCursor && S && T && (y.container[0].style.cursor = "move", y.container[0].style.cursor =
							"-webkit-grab", y.container[0].style.cursor = "-moz-grab", y.container[0].style.cursor = "grab");
						var t = Date.now(),
							s = t - z;
						if (y.allowClick && (y.updateClickedSlide(e), y.emit("onTap", y, e), 300 > s && t - L > 300 && (E &&
								clearTimeout(E), E = setTimeout(function() {
									y && (y.params.paginationHide && y.paginationContainer.length > 0 && !a(e.target).hasClass(y.params.bulletClass) &&
										y.paginationContainer.toggleClass(y.params.paginationHiddenClass), y.emit("onClick", y, e))
								}, 300)), 300 > s && 300 > t - L && (E && clearTimeout(E), y.emit("onDoubleTap", y, e))), L = Date.now(),
							setTimeout(function() {
								y && (y.allowClick = !0)
							}, 0), !T || !S || !y.swipeDirection || 0 === y.touches.diff || P === I) return void(T = S = !1);
						T = S = !1;
						var r;
						if (r = y.params.followFinger ? y.rtl ? y.translate : -y.translate : -P, y.params.freeMode) {
							if (r < -y.minTranslate()) return void y.slideTo(y.activeIndex);
							if (r > -y.maxTranslate()) return void(y.slides.length < y.snapGrid.length ? y.slideTo(y.snapGrid.length - 1) :
								y.slideTo(y.slides.length - 1));
							if (y.params.freeModeMomentum) {
								if (H.length > 1) {
									var i = H.pop(),
										n = H.pop(),
										o = i.position - n.position,
										l = i.time - n.time;
									y.velocity = o / l, y.velocity = y.velocity / 2, Math.abs(y.velocity) < y.params.freeModeMinimumVelocity && (
										y.velocity = 0), (l > 150 || (new window.Date).getTime() - i.time > 300) && (y.velocity = 0)
								} else y.velocity = 0;
								H.length = 0;
								var p = 1e3 * y.params.freeModeMomentumRatio,
									d = y.velocity * p,
									u = y.translate + d;
								y.rtl && (u = -u);
								var c, m = !1,
									f = 20 * Math.abs(y.velocity) * y.params.freeModeMomentumBounceRatio;
								if (u < y.maxTranslate()) y.params.freeModeMomentumBounce ? (u + y.maxTranslate() < -f && (u = y.maxTranslate() -
									f), c = y.maxTranslate(), m = !0, B = !0) : u = y.maxTranslate();
								else if (u > y.minTranslate()) y.params.freeModeMomentumBounce ? (u - y.minTranslate() > f && (u = y.minTranslate() +
									f), c = y.minTranslate(), m = !0, B = !0) : u = y.minTranslate();
								else if (y.params.freeModeSticky) {
									var g, h = 0;
									for (h = 0; h < y.snapGrid.length; h += 1)
										if (y.snapGrid[h] > -u) {
											g = h;
											break
										} u = Math.abs(y.snapGrid[g] - u) < Math.abs(y.snapGrid[g - 1] - u) || "next" === y.swipeDirection ? y.snapGrid[
										g] : y.snapGrid[g - 1], y.rtl || (u = -u)
								}
								if (0 !== y.velocity) p = y.rtl ? Math.abs((-u - y.translate) / y.velocity) : Math.abs((u - y.translate) / y.velocity);
								else if (y.params.freeModeSticky) return void y.slideReset();
								y.params.freeModeMomentumBounce && m ? (y.updateProgress(c), y.setWrapperTransition(p), y.setWrapperTranslate(
									u), y.onTransitionStart(), y.animating = !0, y.wrapper.transitionEnd(function() {
									y && B && (y.emit("onMomentumBounce", y), y.setWrapperTransition(y.params.speed), y.setWrapperTranslate(c),
										y.wrapper.transitionEnd(function() {
											y && y.onTransitionEnd()
										}))
								})) : y.velocity ? (y.updateProgress(u), y.setWrapperTransition(p), y.setWrapperTranslate(u), y.onTransitionStart(),
									y.animating || (y.animating = !0, y.wrapper.transitionEnd(function() {
										y && y.onTransitionEnd()
									}))) : y.updateProgress(u), y.updateActiveIndex()
							}
							return void((!y.params.freeModeMomentum || s >= y.params.longSwipesMs) && (y.updateProgress(), y.updateActiveIndex()))
						}
						var v, w = 0,
							b = y.slidesSizesGrid[0];
						for (v = 0; v < y.slidesGrid.length; v += y.params.slidesPerGroup) "undefined" != typeof y.slidesGrid[v + y.params
							.slidesPerGroup] ? r >= y.slidesGrid[v] && r < y.slidesGrid[v + y.params.slidesPerGroup] && (w = v, b = y.slidesGrid[
							v + y.params.slidesPerGroup] - y.slidesGrid[v]) : r >= y.slidesGrid[v] && (w = v, b = y.slidesGrid[y.slidesGrid
							.length - 1] - y.slidesGrid[y.slidesGrid.length - 2]);
						var x = (r - y.slidesGrid[w]) / b;
						if (s > y.params.longSwipesMs) {
							if (!y.params.longSwipes) return void y.slideTo(y.activeIndex);
							"next" === y.swipeDirection && (x >= y.params.longSwipesRatio ? y.slideTo(w + y.params.slidesPerGroup) : y.slideTo(
								w)), "prev" === y.swipeDirection && (x > 1 - y.params.longSwipesRatio ? y.slideTo(w + y.params.slidesPerGroup) :
								y.slideTo(w))
						} else {
							if (!y.params.shortSwipes) return void y.slideTo(y.activeIndex);
							"next" === y.swipeDirection && y.slideTo(w + y.params.slidesPerGroup), "prev" === y.swipeDirection && y.slideTo(
								w)
						}
					}
				}, y._slideTo = function(e, a) {
					return y.slideTo(e, a, !0, !0)
				}, y.slideTo = function(e, a, t, s) {
					"undefined" == typeof t && (t = !0), "undefined" == typeof e && (e = 0), 0 > e && (e = 0), y.snapIndex = Math.floor(
						e / y.params.slidesPerGroup), y.snapIndex >= y.snapGrid.length && (y.snapIndex = y.snapGrid.length - 1);
					var r = -y.snapGrid[y.snapIndex];
					y.params.autoplay && y.autoplaying && (s || !y.params.autoplayDisableOnInteraction ? y.pauseAutoplay(a) : y.stopAutoplay()),
						y.updateProgress(r);
					for (var i = 0; i < y.slidesGrid.length; i++) - Math.floor(100 * r) >= Math.floor(100 * y.slidesGrid[i]) && (e =
						i);
					return !y.params.allowSwipeToNext && r < y.translate && r < y.minTranslate() ? !1 : !y.params.allowSwipeToPrev &&
						r > y.translate && r > y.maxTranslate() && (y.activeIndex || 0) !== e ? !1 : ("undefined" == typeof a && (a = y.params
								.speed), y.previousIndex = y.activeIndex || 0, y.activeIndex = e, y.rtl && -r === y.translate || !y.rtl && r ===
							y.translate ? (y.params.autoHeight && y.updateAutoHeight(), y.updateClasses(), "slide" !== y.params.effect && y
								.setWrapperTranslate(r), !1) : (y.updateClasses(), y.onTransitionStart(t), 0 === a ? (y.setWrapperTranslate(r),
								y.setWrapperTransition(0), y.onTransitionEnd(t)) : (y.setWrapperTranslate(r), y.setWrapperTransition(a), y.animating ||
								(y.animating = !0, y.wrapper.transitionEnd(function() {
									y && y.onTransitionEnd(t)
								}))), !0))
				}, y.onTransitionStart = function(e) {
					"undefined" == typeof e && (e = !0), y.params.autoHeight && y.updateAutoHeight(), y.lazy && y.lazy.onTransitionStart(),
						e && (y.emit("onTransitionStart", y), y.activeIndex !== y.previousIndex && (y.emit("onSlideChangeStart", y), y.activeIndex >
							y.previousIndex ? y.emit("onSlideNextStart", y) : y.emit("onSlidePrevStart", y)))
				}, y.onTransitionEnd = function(e) {
					y.animating = !1, y.setWrapperTransition(0), "undefined" == typeof e && (e = !0), y.lazy && y.lazy.onTransitionEnd(),
						e && (y.emit("onTransitionEnd", y), y.activeIndex !== y.previousIndex && (y.emit("onSlideChangeEnd", y), y.activeIndex >
							y.previousIndex ? y.emit("onSlideNextEnd", y) : y.emit("onSlidePrevEnd", y))), y.params.hashnav && y.hashnav &&
						y.hashnav.setHash()
				}, y.slideNext = function(e, a, t) {
					if (y.params.loop) {
						if (y.animating) return !1;
						y.fixLoop();
						y.container[0].clientLeft;
						return y.slideTo(y.activeIndex + y.params.slidesPerGroup, a, e, t)
					}
					return y.slideTo(y.activeIndex + y.params.slidesPerGroup, a, e, t)
				}, y._slideNext = function(e) {
					return y.slideNext(!0, e, !0)
				}, y.slidePrev = function(e, a, t) {
					if (y.params.loop) {
						if (y.animating) return !1;
						y.fixLoop();
						y.container[0].clientLeft;
						return y.slideTo(y.activeIndex - 1, a, e, t)
					}
					return y.slideTo(y.activeIndex - 1, a, e, t)
				}, y._slidePrev = function(e) {
					return y.slidePrev(!0, e, !0)
				}, y.slideReset = function(e, a, t) {
					return y.slideTo(y.activeIndex, a, e)
				}, y.setWrapperTransition = function(e, a) {
					y.wrapper.transition(e), "slide" !== y.params.effect && y.effects[y.params.effect] && y.effects[y.params.effect].setTransition(
							e), y.params.parallax && y.parallax && y.parallax.setTransition(e), y.params.scrollbar && y.scrollbar && y.scrollbar
						.setTransition(e), y.params.control && y.controller && y.controller.setTransition(e, a), y.emit(
							"onSetTransition", y, e)
				}, y.setWrapperTranslate = function(e, a, t) {
					var s = 0,
						i = 0,
						n = 0;
					y.isHorizontal() ? s = y.rtl ? -e : e : i = e, y.params.roundLengths && (s = r(s), i = r(i)), y.params.virtualTranslate ||
						(y.support.transforms3d ? y.wrapper.transform("translate3d(" + s + "px, " + i + "px, " + n + "px)") : y.wrapper.transform(
							"translate(" + s + "px, " + i + "px)")), y.translate = y.isHorizontal() ? s : i;
					var o, l = y.maxTranslate() - y.minTranslate();
					o = 0 === l ? 0 : (e - y.minTranslate()) / l, o !== y.progress && y.updateProgress(e), a && y.updateActiveIndex(),
						"slide" !== y.params.effect && y.effects[y.params.effect] && y.effects[y.params.effect].setTranslate(y.translate),
						y.params.parallax && y.parallax && y.parallax.setTranslate(y.translate), y.params.scrollbar && y.scrollbar && y.scrollbar
						.setTranslate(y.translate), y.params.control && y.controller && y.controller.setTranslate(y.translate, t), y.emit(
							"onSetTranslate", y, y.translate)
				}, y.getTranslate = function(e, a) {
					var t, s, r, i;
					return "undefined" == typeof a && (a = "x"), y.params.virtualTranslate ? y.rtl ? -y.translate : y.translate : (r =
						window.getComputedStyle(e, null), window.WebKitCSSMatrix ? (s = r.transform || r.webkitTransform, s.split(",").length >
							6 && (s = s.split(", ").map(function(e) {
								return e.replace(",", ".")
							}).join(", ")), i = new window.WebKitCSSMatrix("none" === s ? "" : s)) : (i = r.MozTransform || r.OTransform ||
							r.MsTransform || r.msTransform || r.transform || r.getPropertyValue("transform").replace("translate(",
								"matrix(1, 0, 0, 1,"), t = i.toString().split(",")), "x" === a && (s = window.WebKitCSSMatrix ? i.m41 : 16 ===
							t.length ? parseFloat(t[12]) : parseFloat(t[4])), "y" === a && (s = window.WebKitCSSMatrix ? i.m42 : 16 === t.length ?
							parseFloat(t[13]) : parseFloat(t[5])), y.rtl && s && (s = -s), s || 0)
				}, y.getWrapperTranslate = function(e) {
					return "undefined" == typeof e && (e = y.isHorizontal() ? "x" : "y"), y.getTranslate(y.wrapper[0], e)
				}, y.observers = [], y.initObservers = function() {
					if (y.params.observeParents)
						for (var e = y.container.parents(), a = 0; a < e.length; a++) o(e[a]);
					o(y.container[0], {
						childList: !1
					}), o(y.wrapper[0], {
						attributes: !1
					})
				}, y.disconnectObservers = function() {
					for (var e = 0; e < y.observers.length; e++) y.observers[e].disconnect();
					y.observers = []
				}, y.createLoop = function() {
					y.wrapper.children("." + y.params.slideClass + "." + y.params.slideDuplicateClass).remove();
					var e = y.wrapper.children("." + y.params.slideClass);
					"auto" !== y.params.slidesPerView || y.params.loopedSlides || (y.params.loopedSlides = e.length), y.loopedSlides =
						parseInt(y.params.loopedSlides || y.params.slidesPerView, 10), y.loopedSlides = y.loopedSlides + y.params.loopAdditionalSlides,
						y.loopedSlides > e.length && (y.loopedSlides = e.length);
					var t, s = [],
						r = [];
					for (e.each(function(t, i) {
							var n = a(this);
							t < y.loopedSlides && r.push(i), t < e.length && t >= e.length - y.loopedSlides && s.push(i), n.attr(
								"data-swiper-slide-index", t)
						}), t = 0; t < r.length; t++) y.wrapper.append(a(r[t].cloneNode(!0)).addClass(y.params.slideDuplicateClass));
					for (t = s.length - 1; t >= 0; t--) y.wrapper.prepend(a(s[t].cloneNode(!0)).addClass(y.params.slideDuplicateClass))
				}, y.destroyLoop = function() {
					y.wrapper.children("." + y.params.slideClass + "." + y.params.slideDuplicateClass).remove(), y.slides.removeAttr(
						"data-swiper-slide-index")
				}, y.reLoop = function(e) {
					var a = y.activeIndex - y.loopedSlides;
					y.destroyLoop(), y.createLoop(), y.updateSlidesSize(), e && y.slideTo(a + y.loopedSlides, 0, !1)
				}, y.fixLoop = function() {
					var e;
					y.activeIndex < y.loopedSlides ? (e = y.slides.length - 3 * y.loopedSlides + y.activeIndex, e += y.loopedSlides,
						y.slideTo(e, 0, !1, !0)) : ("auto" === y.params.slidesPerView && y.activeIndex >= 2 * y.loopedSlides || y.activeIndex >
						y.slides.length - 2 * y.params.slidesPerView) && (e = -y.slides.length + y.activeIndex + y.loopedSlides, e += y
						.loopedSlides, y.slideTo(e, 0, !1, !0))
				}, y.appendSlide = function(e) {
					if (y.params.loop && y.destroyLoop(), "object" == typeof e && e.length)
						for (var a = 0; a < e.length; a++) e[a] && y.wrapper.append(e[a]);
					else y.wrapper.append(e);
					y.params.loop && y.createLoop(), y.params.observer && y.support.observer || y.update(!0)
				}, y.prependSlide = function(e) {
					y.params.loop && y.destroyLoop();
					var a = y.activeIndex + 1;
					if ("object" == typeof e && e.length) {
						for (var t = 0; t < e.length; t++) e[t] && y.wrapper.prepend(e[t]);
						a = y.activeIndex + e.length
					} else y.wrapper.prepend(e);
					y.params.loop && y.createLoop(), y.params.observer && y.support.observer || y.update(!0), y.slideTo(a, 0, !1)
				}, y.removeSlide = function(e) {
					y.params.loop && (y.destroyLoop(), y.slides = y.wrapper.children("." + y.params.slideClass));
					var a, t = y.activeIndex;
					if ("object" == typeof e && e.length) {
						for (var s = 0; s < e.length; s++) a = e[s], y.slides[a] && y.slides.eq(a).remove(), t > a && t--;
						t = Math.max(t, 0)
					} else a = e, y.slides[a] && y.slides.eq(a).remove(), t > a && t--, t = Math.max(t, 0);
					y.params.loop && y.createLoop(), y.params.observer && y.support.observer || y.update(!0), y.params.loop ? y.slideTo(
						t + y.loopedSlides, 0, !1) : y.slideTo(t, 0, !1)
				}, y.removeAllSlides = function() {
					for (var e = [], a = 0; a < y.slides.length; a++) e.push(a);
					y.removeSlide(e)
				}, y.effects = {
					fade: {
						setTranslate: function() {
							for (var e = 0; e < y.slides.length; e++) {
								var a = y.slides.eq(e),
									t = a[0].swiperSlideOffset,
									s = -t;
								y.params.virtualTranslate || (s -= y.translate);
								var r = 0;
								y.isHorizontal() || (r = s, s = 0);
								var i = y.params.fade.crossFade ? Math.max(1 - Math.abs(a[0].progress), 0) : 1 + Math.min(Math.max(a[0].progress,
									-1), 0);
								a.css({
									opacity: i
								}).transform("translate3d(" + s + "px, " + r + "px, 0px)")
							}
						},
						setTransition: function(e) {
							if (y.slides.transition(e), y.params.virtualTranslate && 0 !== e) {
								var a = !1;
								y.slides.transitionEnd(function() {
									if (!a && y) {
										a = !0, y.animating = !1;
										for (var e = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd",
												"msTransitionEnd"
											], t = 0; t < e.length; t++) y.wrapper.trigger(e[t])
									}
								})
							}
						}
					},
					flip: {
						setTranslate: function() {
							for (var e = 0; e < y.slides.length; e++) {
								var t = y.slides.eq(e),
									s = t[0].progress;
								y.params.flip.limitRotation && (s = Math.max(Math.min(t[0].progress, 1), -1));
								var r = t[0].swiperSlideOffset,
									i = -180 * s,
									n = i,
									o = 0,
									l = -r,
									p = 0;
								if (y.isHorizontal() ? y.rtl && (n = -n) : (p = l, l = 0, o = -n, n = 0), t[0].style.zIndex = -Math.abs(Math.round(
										s)) + y.slides.length, y.params.flip.slideShadows) {
									var d = y.isHorizontal() ? t.find(".swiper-slide-shadow-left") : t.find(".swiper-slide-shadow-top"),
										u = y.isHorizontal() ? t.find(".swiper-slide-shadow-right") : t.find(".swiper-slide-shadow-bottom");
									0 === d.length && (d = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "left" : "top") +
											'"></div>'), t.append(d)), 0 === u.length && (u = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ?
											"right" : "bottom") + '"></div>'), t.append(u)), d.length && (d[0].style.opacity = Math.max(-s, 0)), u.length &&
										(u[0].style.opacity = Math.max(s, 0))
								}
								t.transform("translate3d(" + l + "px, " + p + "px, 0px) rotateX(" + o + "deg) rotateY(" + n + "deg)")
							}
						},
						setTransition: function(e) {
							if (y.slides.transition(e).find(
									".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
								).transition(e), y.params.virtualTranslate && 0 !== e) {
								var t = !1;
								y.slides.eq(y.activeIndex).transitionEnd(function() {
									if (!t && y && a(this).hasClass(y.params.slideActiveClass)) {
										t = !0, y.animating = !1;
										for (var e = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd",
												"msTransitionEnd"
											], s = 0; s < e.length; s++) y.wrapper.trigger(e[s])
									}
								})
							}
						}
					},
					cube: {
						setTranslate: function() {
							var e, t = 0;
							y.params.cube.shadow && (y.isHorizontal() ? (e = y.wrapper.find(".swiper-cube-shadow"), 0 === e.length && (e =
								a('<div class="swiper-cube-shadow"></div>'), y.wrapper.append(e)), e.css({
								height: y.width + "px"
							})) : (e = y.container.find(".swiper-cube-shadow"), 0 === e.length && (e = a(
								'<div class="swiper-cube-shadow"></div>'), y.container.append(e))));
							for (var s = 0; s < y.slides.length; s++) {
								var r = y.slides.eq(s),
									i = 90 * s,
									n = Math.floor(i / 360);
								y.rtl && (i = -i, n = Math.floor(-i / 360));
								var o = Math.max(Math.min(r[0].progress, 1), -1),
									l = 0,
									p = 0,
									d = 0;
								s % 4 === 0 ? (l = 4 * -n * y.size, d = 0) : (s - 1) % 4 === 0 ? (l = 0, d = 4 * -n * y.size) : (s - 2) % 4 ===
									0 ? (l = y.size + 4 * n * y.size, d = y.size) : (s - 3) % 4 === 0 && (l = -y.size, d = 3 * y.size + 4 * y.size *
										n), y.rtl && (l = -l), y.isHorizontal() || (p = l, l = 0);
								var u = "rotateX(" + (y.isHorizontal() ? 0 : -i) + "deg) rotateY(" + (y.isHorizontal() ? i : 0) +
									"deg) translate3d(" + l + "px, " + p + "px, " + d + "px)";
								if (1 >= o && o > -1 && (t = 90 * s + 90 * o, y.rtl && (t = 90 * -s - 90 * o)), r.transform(u), y.params.cube
									.slideShadows) {
									var c = y.isHorizontal() ? r.find(".swiper-slide-shadow-left") : r.find(".swiper-slide-shadow-top"),
										m = y.isHorizontal() ? r.find(".swiper-slide-shadow-right") : r.find(".swiper-slide-shadow-bottom");
									0 === c.length && (c = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "left" : "top") +
											'"></div>'), r.append(c)), 0 === m.length && (m = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ?
											"right" : "bottom") + '"></div>'), r.append(m)), c.length && (c[0].style.opacity = Math.max(-o, 0)), m.length &&
										(m[0].style.opacity = Math.max(o, 0))
								}
							}
							if (y.wrapper.css({
									"-webkit-transform-origin": "50% 50% -" + y.size / 2 + "px",
									"-moz-transform-origin": "50% 50% -" + y.size / 2 + "px",
									"-ms-transform-origin": "50% 50% -" + y.size / 2 + "px",
									"transform-origin": "50% 50% -" + y.size / 2 + "px"
								}), y.params.cube.shadow)
								if (y.isHorizontal()) e.transform("translate3d(0px, " + (y.width / 2 + y.params.cube.shadowOffset) + "px, " +
									-y.width / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + y.params.cube.shadowScale + ")");
								else {
									var f = Math.abs(t) - 90 * Math.floor(Math.abs(t) / 90),
										g = 1.5 - (Math.sin(2 * f * Math.PI / 360) / 2 + Math.cos(2 * f * Math.PI / 360) / 2),
										h = y.params.cube.shadowScale,
										v = y.params.cube.shadowScale / g,
										w = y.params.cube.shadowOffset;
									e.transform("scale3d(" + h + ", 1, " + v + ") translate3d(0px, " + (y.height / 2 + w) + "px, " + -y.height /
										2 / v + "px) rotateX(-90deg)")
								} var b = y.isSafari || y.isUiWebView ? -y.size / 2 : 0;
							y.wrapper.transform("translate3d(0px,0," + b + "px) rotateX(" + (y.isHorizontal() ? 0 : t) + "deg) rotateY(" +
								(y.isHorizontal() ? -t : 0) + "deg)")
						},
						setTransition: function(e) {
							y.slides.transition(e).find(
								".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
							).transition(e), y.params.cube.shadow && !y.isHorizontal() && y.container.find(".swiper-cube-shadow").transition(
								e)
						}
					},
					coverflow: {
						setTranslate: function() {
							for (var e = y.translate, t = y.isHorizontal() ? -e + y.width / 2 : -e + y.height / 2, s = y.isHorizontal() ?
									y.params.coverflow.rotate : -y.params.coverflow.rotate, r = y.params.coverflow.depth, i = 0, n = y.slides.length; n >
								i; i++) {
								var o = y.slides.eq(i),
									l = y.slidesSizesGrid[i],
									p = o[0].swiperSlideOffset,
									d = (t - p - l / 2) / l * y.params.coverflow.modifier,
									u = y.isHorizontal() ? s * d : 0,
									c = y.isHorizontal() ? 0 : s * d,
									m = -r * Math.abs(d),
									f = y.isHorizontal() ? 0 : y.params.coverflow.stretch * d,
									g = y.isHorizontal() ? y.params.coverflow.stretch * d : 0;
								Math.abs(g) < .001 && (g = 0), Math.abs(f) < .001 && (f = 0), Math.abs(m) < .001 && (m = 0), Math.abs(u) <
									.001 && (u = 0), Math.abs(c) < .001 && (c = 0);
								var h = "translate3d(" + g + "px," + f + "px," + m + "px)  rotateX(" + c + "deg) rotateY(" + u + "deg)";
								if (o.transform(h), o[0].style.zIndex = -Math.abs(Math.round(d)) + 1, y.params.coverflow.slideShadows) {
									var v = y.isHorizontal() ? o.find(".swiper-slide-shadow-left") : o.find(".swiper-slide-shadow-top"),
										w = y.isHorizontal() ? o.find(".swiper-slide-shadow-right") : o.find(".swiper-slide-shadow-bottom");
									0 === v.length && (v = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "left" : "top") +
											'"></div>'), o.append(v)), 0 === w.length && (w = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ?
											"right" : "bottom") + '"></div>'), o.append(w)), v.length && (v[0].style.opacity = d > 0 ? d : 0), w.length &&
										(w[0].style.opacity = -d > 0 ? -d : 0)
								}
							}
							if (y.browser.ie) {
								var b = y.wrapper[0].style;
								b.perspectiveOrigin = t + "px 50%"
							}
						},
						setTransition: function(e) {
							y.slides.transition(e).find(
								".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
							).transition(e)
						}
					}
				}, y.lazy = {
					initialImageLoaded: !1,
					loadImageInSlide: function(e, t) {
						if ("undefined" != typeof e && ("undefined" == typeof t && (t = !0), 0 !== y.slides.length)) {
							var s = y.slides.eq(e),
								r = s.find(".swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)");
							!s.hasClass("swiper-lazy") || s.hasClass("swiper-lazy-loaded") || s.hasClass("swiper-lazy-loading") || (r = r.add(
								s[0])), 0 !== r.length && r.each(function() {
								var e = a(this);
								e.addClass("swiper-lazy-loading");
								var r = e.attr("data-background"),
									i = e.attr("data-src"),
									n = e.attr("data-srcset");
								y.loadImage(e[0], i || r, n, !1, function() {
									if (r ? (e.css("background-image", 'url("' + r + '")'), e.removeAttr("data-background")) : (n && (e.attr(
											"srcset", n), e.removeAttr("data-srcset")), i && (e.attr("src", i), e.removeAttr("data-src"))), e.addClass(
											"swiper-lazy-loaded").removeClass("swiper-lazy-loading"), s.find(".swiper-lazy-preloader, .preloader")
										.remove(), y.params.loop && t) {
										var a = s.attr("data-swiper-slide-index");
										if (s.hasClass(y.params.slideDuplicateClass)) {
											var o = y.wrapper.children('[data-swiper-slide-index="' + a + '"]:not(.' + y.params.slideDuplicateClass +
												")");
											y.lazy.loadImageInSlide(o.index(), !1)
										} else {
											var l = y.wrapper.children("." + y.params.slideDuplicateClass + '[data-swiper-slide-index="' + a +
												'"]');
											y.lazy.loadImageInSlide(l.index(), !1)
										}
									}
									y.emit("onLazyImageReady", y, s[0], e[0])
								}), y.emit("onLazyImageLoad", y, s[0], e[0])
							})
						}
					},
					load: function() {
						var e;
						if (y.params.watchSlidesVisibility) y.wrapper.children("." + y.params.slideVisibleClass).each(function() {
							y.lazy.loadImageInSlide(a(this).index())
						});
						else if (y.params.slidesPerView > 1)
							for (e = y.activeIndex; e < y.activeIndex + y.params.slidesPerView; e++) y.slides[e] && y.lazy.loadImageInSlide(
								e);
						else y.lazy.loadImageInSlide(y.activeIndex);
						if (y.params.lazyLoadingInPrevNext)
							if (y.params.slidesPerView > 1 || y.params.lazyLoadingInPrevNextAmount && y.params.lazyLoadingInPrevNextAmount >
								1) {
								var t = y.params.lazyLoadingInPrevNextAmount,
									s = y.params.slidesPerView,
									r = Math.min(y.activeIndex + s + Math.max(t, s), y.slides.length),
									i = Math.max(y.activeIndex - Math.max(s, t), 0);
								for (e = y.activeIndex + y.params.slidesPerView; r > e; e++) y.slides[e] && y.lazy.loadImageInSlide(e);
								for (e = i; e < y.activeIndex; e++) y.slides[e] && y.lazy.loadImageInSlide(e)
							} else {
								var n = y.wrapper.children("." + y.params.slideNextClass);
								n.length > 0 && y.lazy.loadImageInSlide(n.index());
								var o = y.wrapper.children("." + y.params.slidePrevClass);
								o.length > 0 && y.lazy.loadImageInSlide(o.index())
							}
					},
					onTransitionStart: function() {
						y.params.lazyLoading && (y.params.lazyLoadingOnTransitionStart || !y.params.lazyLoadingOnTransitionStart && !y.lazy
							.initialImageLoaded) && y.lazy.load()
					},
					onTransitionEnd: function() {
						y.params.lazyLoading && !y.params.lazyLoadingOnTransitionStart && y.lazy.load()
					}
				}, y.scrollbar = {
					isTouched: !1,
					setDragPosition: function(e) {
						var a = y.scrollbar,
							t = y.isHorizontal() ? "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX ||
							e.clientX : "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY || e.clientY,
							s = t - a.track.offset()[y.isHorizontal() ? "left" : "top"] - a.dragSize / 2,
							r = -y.minTranslate() * a.moveDivider,
							i = -y.maxTranslate() * a.moveDivider;
						r > s ? s = r : s > i && (s = i), s = -s / a.moveDivider, y.updateProgress(s), y.setWrapperTranslate(s, !0)
					},
					dragStart: function(e) {
						var a = y.scrollbar;
						a.isTouched = !0, e.preventDefault(), e.stopPropagation(), a.setDragPosition(e), clearTimeout(a.dragTimeout), a
							.track.transition(0), y.params.scrollbarHide && a.track.css("opacity", 1), y.wrapper.transition(100), a.drag.transition(
								100), y.emit("onScrollbarDragStart", y)
					},
					dragMove: function(e) {
						var a = y.scrollbar;
						a.isTouched && (e.preventDefault ? e.preventDefault() : e.returnValue = !1, a.setDragPosition(e), y.wrapper.transition(
							0), a.track.transition(0), a.drag.transition(0), y.emit("onScrollbarDragMove", y))
					},
					dragEnd: function(e) {
						var a = y.scrollbar;
						a.isTouched && (a.isTouched = !1, y.params.scrollbarHide && (clearTimeout(a.dragTimeout), a.dragTimeout =
							setTimeout(function() {
								a.track.css("opacity", 0), a.track.transition(400)
							}, 1e3)), y.emit("onScrollbarDragEnd", y), y.params.scrollbarSnapOnRelease && y.slideReset())
					},
					enableDraggable: function() {
						var e = y.scrollbar,
							t = y.support.touch ? e.track : document;
						a(e.track).on(y.touchEvents.start, e.dragStart), a(t).on(y.touchEvents.move, e.dragMove), a(t).on(y.touchEvents
							.end, e.dragEnd)
					},
					disableDraggable: function() {
						var e = y.scrollbar,
							t = y.support.touch ? e.track : document;
						a(e.track).off(y.touchEvents.start, e.dragStart), a(t).off(y.touchEvents.move, e.dragMove), a(t).off(y.touchEvents
							.end, e.dragEnd)
					},
					set: function() {
						if (y.params.scrollbar) {
							var e = y.scrollbar;
							e.track = a(y.params.scrollbar), y.params.uniqueNavElements && "string" == typeof y.params.scrollbar && e.track
								.length > 1 && 1 === y.container.find(y.params.scrollbar).length && (e.track = y.container.find(y.params.scrollbar)),
								e.drag = e.track.find(".swiper-scrollbar-drag"), 0 === e.drag.length && (e.drag = a(
									'<div class="swiper-scrollbar-drag"></div>'), e.track.append(e.drag)), e.drag[0].style.width = "", e.drag[0]
								.style.height = "", e.trackSize = y.isHorizontal() ? e.track[0].offsetWidth : e.track[0].offsetHeight, e.divider =
								y.size / y.virtualSize, e.moveDivider = e.divider * (e.trackSize / y.size), e.dragSize = e.trackSize * e.divider,
								y.isHorizontal() ? e.drag[0].style.width = e.dragSize + "px" : e.drag[0].style.height = e.dragSize + "px", e.divider >=
								1 ? e.track[0].style.display = "none" : e.track[0].style.display = "", y.params.scrollbarHide && (e.track[0].style
									.opacity = 0)
						}
					},
					setTranslate: function() {
						if (y.params.scrollbar) {
							var e, a = y.scrollbar,
								t = (y.translate || 0, a.dragSize);
							e = (a.trackSize - a.dragSize) * y.progress, y.rtl && y.isHorizontal() ? (e = -e, e > 0 ? (t = a.dragSize - e,
									e = 0) : -e + a.dragSize > a.trackSize && (t = a.trackSize + e)) : 0 > e ? (t = a.dragSize + e, e = 0) : e +
								a.dragSize > a.trackSize && (t = a.trackSize - e), y.isHorizontal() ? (y.support.transforms3d ? a.drag.transform(
										"translate3d(" + e + "px, 0, 0)") : a.drag.transform("translateX(" + e + "px)"), a.drag[0].style.width = t +
									"px") : (y.support.transforms3d ? a.drag.transform("translate3d(0px, " + e + "px, 0)") : a.drag.transform(
									"translateY(" + e + "px)"), a.drag[0].style.height = t + "px"), y.params.scrollbarHide && (clearTimeout(a.timeout),
									a.track[0].style.opacity = 1, a.timeout = setTimeout(function() {
										a.track[0].style.opacity = 0, a.track.transition(400)
									}, 1e3))
						}
					},
					setTransition: function(e) {
						y.params.scrollbar && y.scrollbar.drag.transition(e)
					}
				}, y.controller = {
					LinearSpline: function(e, a) {
						this.x = e, this.y = a, this.lastIndex = e.length - 1;
						var t, s;
						this.x.length;
						this.interpolate = function(e) {
							return e ? (s = r(this.x, e), t = s - 1, (e - this.x[t]) * (this.y[s] - this.y[t]) / (this.x[s] - this.x[t]) +
								this.y[t]) : 0
						};
						var r = function() {
							var e, a, t;
							return function(s, r) {
								for (a = -1, e = s.length; e - a > 1;) s[t = e + a >> 1] <= r ? a = t : e = t;
								return e
							}
						}()
					},
					getInterpolateFunction: function(e) {
						y.controller.spline || (y.controller.spline = y.params.loop ? new y.controller.LinearSpline(y.slidesGrid, e.slidesGrid) :
							new y.controller.LinearSpline(y.snapGrid, e.snapGrid))
					},
					setTranslate: function(e, a) {
						function s(a) {
							e = a.rtl && "horizontal" === a.params.direction ? -y.translate : y.translate, "slide" === y.params.controlBy &&
								(y.controller.getInterpolateFunction(a), i = -y.controller.spline.interpolate(-e)), i && "container" !== y.params
								.controlBy || (r = (a.maxTranslate() - a.minTranslate()) / (y.maxTranslate() - y.minTranslate()), i = (e - y.minTranslate()) *
									r + a.minTranslate()), y.params.controlInverse && (i = a.maxTranslate() - i), a.updateProgress(i), a.setWrapperTranslate(
									i, !1, y), a.updateActiveIndex()
						}
						var r, i, n = y.params.control;
						if (y.isArray(n))
							for (var o = 0; o < n.length; o++) n[o] !== a && n[o] instanceof t && s(n[o]);
						else n instanceof t && a !== n && s(n)
					},
					setTransition: function(e, a) {
						function s(a) {
							a.setWrapperTransition(e, y), 0 !== e && (a.onTransitionStart(), a.wrapper.transitionEnd(function() {
								i && (a.params.loop && "slide" === y.params.controlBy && a.fixLoop(), a.onTransitionEnd())
							}))
						}
						var r, i = y.params.control;
						if (y.isArray(i))
							for (r = 0; r < i.length; r++) i[r] !== a && i[r] instanceof t && s(i[r]);
						else i instanceof t && a !== i && s(i)
					}
				}, y.hashnav = {
					init: function() {
						if (y.params.hashnav) {
							y.hashnav.initialized = !0;
							var e = document.location.hash.replace("#", "");
							if (e)
								for (var a = 0, t = 0, s = y.slides.length; s > t; t++) {
									var r = y.slides.eq(t),
										i = r.attr("data-hash");
									if (i === e && !r.hasClass(y.params.slideDuplicateClass)) {
										var n = r.index();
										y.slideTo(n, a, y.params.runCallbacksOnInit, !0)
									}
								}
						}
					},
					setHash: function() {
						y.hashnav.initialized && y.params.hashnav && (document.location.hash = y.slides.eq(y.activeIndex).attr(
							"data-hash") || "")
					}
				}, y.disableKeyboardControl = function() {
					y.params.keyboardControl = !1, a(document).off("keydown", l)
				}, y.enableKeyboardControl = function() {
					y.params.keyboardControl = !0, a(document).on("keydown", l)
				}, y.mousewheel = {
					event: !1,
					lastScrollTime: (new window.Date).getTime()
				}, y.params.mousewheelControl) {
				try {
					new window.WheelEvent("wheel"), y.mousewheel.event = "wheel"
				} catch (O) {
					(window.WheelEvent || y.container[0] && "wheel" in y.container[0]) && (y.mousewheel.event = "wheel")
				}!y.mousewheel.event && window.WheelEvent, y.mousewheel.event || void 0 === document.onmousewheel || (y.mousewheel
					.event = "mousewheel"), y.mousewheel.event || (y.mousewheel.event = "DOMMouseScroll")
			}
			y.disableMousewheelControl = function() {
				return y.mousewheel.event ? (y.container.off(y.mousewheel.event, p), !0) : !1
			}, y.enableMousewheelControl = function() {
				return y.mousewheel.event ? (y.container.on(y.mousewheel.event, p), !0) : !1
			}, y.parallax = {
				setTranslate: function() {
					y.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(
						function() {
							d(this, y.progress)
						}), y.slides.each(function() {
						var e = a(this);
						e.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function() {
							var a = Math.min(Math.max(e[0].progress, -1), 1);
							d(this, a)
						})
					})
				},
				setTransition: function(e) {
					"undefined" == typeof e && (e = y.params.speed), y.container.find(
						"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function() {
						var t = a(this),
							s = parseInt(t.attr("data-swiper-parallax-duration"), 10) || e;
						0 === e && (s = 0), t.transition(s)
					})
				}
			}, y._plugins = [];
			for (var N in y.plugins) {
				var R = y.plugins[N](y, y.params[N]);
				R && y._plugins.push(R)
			}
			return y.callPlugins = function(e) {
				for (var a = 0; a < y._plugins.length; a++) e in y._plugins[a] && y._plugins[a][e](arguments[1], arguments[2],
					arguments[3], arguments[4], arguments[5])
			}, y.emitterEventListeners = {}, y.emit = function(e) {
				y.params[e] && y.params[e](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
				var a;
				if (y.emitterEventListeners[e])
					for (a = 0; a < y.emitterEventListeners[e].length; a++) y.emitterEventListeners[e][a](arguments[1], arguments[2],
						arguments[3], arguments[4], arguments[5]);
				y.callPlugins && y.callPlugins(e, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
			}, y.on = function(e, a) {
				return e = u(e), y.emitterEventListeners[e] || (y.emitterEventListeners[e] = []), y.emitterEventListeners[e].push(
					a), y
			}, y.off = function(e, a) {
				var t;
				if (e = u(e), "undefined" == typeof a) return y.emitterEventListeners[e] = [], y;
				if (y.emitterEventListeners[e] && 0 !== y.emitterEventListeners[e].length) {
					for (t = 0; t < y.emitterEventListeners[e].length; t++) y.emitterEventListeners[e][t] === a && y.emitterEventListeners[
						e].splice(t, 1);
					return y
				}
			}, y.once = function(e, a) {
				e = u(e);
				var t = function() {
					a(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]), y.off(e, t)
				};
				return y.on(e, t), y
			}, y.a11y = {
				makeFocusable: function(e) {
					return e.attr("tabIndex", "0"), e
				},
				addRole: function(e, a) {
					return e.attr("role", a), e
				},
				addLabel: function(e, a) {
					return e.attr("aria-label", a), e
				},
				disable: function(e) {
					return e.attr("aria-disabled", !0), e
				},
				enable: function(e) {
					return e.attr("aria-disabled", !1), e
				},
				onEnterKey: function(e) {
					13 === e.keyCode && (a(e.target).is(y.params.nextButton) ? (y.onClickNext(e), y.isEnd ? y.a11y.notify(y.params.lastSlideMessage) :
						y.a11y.notify(y.params.nextSlideMessage)) : a(e.target).is(y.params.prevButton) && (y.onClickPrev(e), y.isBeginning ?
						y.a11y.notify(y.params.firstSlideMessage) : y.a11y.notify(y.params.prevSlideMessage)), a(e.target).is("." +
						y.params.bulletClass) && a(e.target)[0].click())
				},
				liveRegion: a('<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>'),
				notify: function(e) {
					var a = y.a11y.liveRegion;
					0 !== a.length && (a.html(""), a.html(e))
				},
				init: function() {
					y.params.nextButton && y.nextButton && y.nextButton.length > 0 && (y.a11y.makeFocusable(y.nextButton), y.a11y.addRole(
							y.nextButton, "button"), y.a11y.addLabel(y.nextButton, y.params.nextSlideMessage)), y.params.prevButton && y.prevButton &&
						y.prevButton.length > 0 && (y.a11y.makeFocusable(y.prevButton), y.a11y.addRole(y.prevButton, "button"), y.a11y
							.addLabel(y.prevButton, y.params.prevSlideMessage)), a(y.container).append(y.a11y.liveRegion)
				},
				initPagination: function() {
					y.params.pagination && y.params.paginationClickable && y.bullets && y.bullets.length && y.bullets.each(function() {
						var e = a(this);
						y.a11y.makeFocusable(e), y.a11y.addRole(e, "button"), y.a11y.addLabel(e, y.params.paginationBulletMessage.replace(
							/{{index}}/, e.index() + 1))
					})
				},
				destroy: function() {
					y.a11y.liveRegion && y.a11y.liveRegion.length > 0 && y.a11y.liveRegion.remove()
				}
			}, y.init = function() {
				y.params.loop && y.createLoop(), y.updateContainerSize(), y.updateSlidesSize(), y.updatePagination(), y.params.scrollbar &&
					y.scrollbar && (y.scrollbar.set(), y.params.scrollbarDraggable && y.scrollbar.enableDraggable()), "slide" !== y.params
					.effect && y.effects[y.params.effect] && (y.params.loop || y.updateProgress(), y.effects[y.params.effect].setTranslate()),
					y.params.loop ? y.slideTo(y.params.initialSlide + y.loopedSlides, 0, y.params.runCallbacksOnInit) : (y.slideTo(y
						.params.initialSlide, 0, y.params.runCallbacksOnInit), 0 === y.params.initialSlide && (y.parallax && y.params.parallax &&
						y.parallax.setTranslate(), y.lazy && y.params.lazyLoading && (y.lazy.load(), y.lazy.initialImageLoaded = !0))),
					y.attachEvents(), y.params.observer && y.support.observer && y.initObservers(), y.params.preloadImages && !y.params
					.lazyLoading && y.preloadImages(), y.params.autoplay && y.startAutoplay(), y.params.keyboardControl && y.enableKeyboardControl &&
					y.enableKeyboardControl(), y.params.mousewheelControl && y.enableMousewheelControl && y.enableMousewheelControl(),
					y.params.hashnav && y.hashnav && y.hashnav.init(), y.params.a11y && y.a11y && y.a11y.init(), y.emit("onInit", y)
			}, y.cleanupStyles = function() {
				y.container.removeClass(y.classNames.join(" ")).removeAttr("style"), y.wrapper.removeAttr("style"), y.slides && y
					.slides.length && y.slides.removeClass([y.params.slideVisibleClass, y.params.slideActiveClass, y.params.slideNextClass,
						y.params.slidePrevClass
					].join(" ")).removeAttr("style").removeAttr("data-swiper-column").removeAttr("data-swiper-row"), y.paginationContainer &&
					y.paginationContainer.length && y.paginationContainer.removeClass(y.params.paginationHiddenClass), y.bullets &&
					y.bullets.length && y.bullets.removeClass(y.params.bulletActiveClass), y.params.prevButton && a(y.params.prevButton)
					.removeClass(y.params.buttonDisabledClass), y.params.nextButton && a(y.params.nextButton).removeClass(y.params.buttonDisabledClass),
					y.params.scrollbar && y.scrollbar && (y.scrollbar.track && y.scrollbar.track.length && y.scrollbar.track.removeAttr(
						"style"), y.scrollbar.drag && y.scrollbar.drag.length && y.scrollbar.drag.removeAttr("style"))
			}, y.destroy = function(e, a) {
				y.detachEvents(), y.stopAutoplay(), y.params.scrollbar && y.scrollbar && y.params.scrollbarDraggable && y.scrollbar
					.disableDraggable(), y.params.loop && y.destroyLoop(), a && y.cleanupStyles(), y.disconnectObservers(), y.params
					.keyboardControl && y.disableKeyboardControl && y.disableKeyboardControl(), y.params.mousewheelControl && y.disableMousewheelControl &&
					y.disableMousewheelControl(), y.params.a11y && y.a11y && y.a11y.destroy(), y.emit("onDestroy"), e !== !1 && (y =
						null)
			}, y.init(), y
		}
	};
	t.prototype = {
		isSafari: function() {
			var e = navigator.userAgent.toLowerCase();
			return e.indexOf("safari") >= 0 && e.indexOf("chrome") < 0 && e.indexOf("android") < 0
		}(),
		isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),
		isArray: function(e) {
			return "[object Array]" === Object.prototype.toString.apply(e)
		},
		browser: {
			ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,
			ieTouch: window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1 || window.navigator.pointerEnabled &&
				window.navigator.maxTouchPoints > 1
		},
		device: function() {
			var e = navigator.userAgent,
				a = e.match(/(Android);?[\s\/]+([\d.]+)?/),
				t = e.match(/(iPad).*OS\s([\d_]+)/),
				s = e.match(/(iPod)(.*OS\s([\d_]+))?/),
				r = !t && e.match(/(iPhone\sOS)\s([\d_]+)/);
			return {
				ios: t || r || s,
				android: a
			}
		}(),
		support: {
			touch: window.Modernizr && Modernizr.touch === !0 || function() {
				return !!("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch)
			}(),
			transforms3d: window.Modernizr && Modernizr.csstransforms3d === !0 || function() {
				var e = document.createElement("div").style;
				return "webkitPerspective" in e || "MozPerspective" in e || "OPerspective" in e || "MsPerspective" in e ||
					"perspective" in e
			}(),
			flexbox: function() {
				for (var e = document.createElement("div").style, a =
						"alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient"
						.split(" "), t = 0; t < a.length; t++)
					if (a[t] in e) return !0
			}(),
			observer: function() {
				return "MutationObserver" in window || "WebkitMutationObserver" in window
			}()
		},
		plugins: {}
	};
	for (var s = ["jQuery", "Zepto", "Dom7"], r = 0; r < s.length; r++) window[s[r]] && e(window[s[r]]);
	var i;
	i = "undefined" == typeof Dom7 ? window.Dom7 || window.Zepto || window.jQuery : Dom7, i && ("transitionEnd" in i.fn ||
		(i.fn.transitionEnd = function(e) {
			function a(i) {
				if (i.target === this)
					for (e.call(this, i), t = 0; t < s.length; t++) r.off(s[t], a)
			}
			var t, s = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"],
				r = this;
			if (e)
				for (t = 0; t < s.length; t++) r.on(s[t], a);
			return this
		}), "transform" in i.fn || (i.fn.transform = function(e) {
			for (var a = 0; a < this.length; a++) {
				var t = this[a].style;
				t.webkitTransform = t.MsTransform = t.msTransform = t.MozTransform = t.OTransform = t.transform = e
			}
			return this
		}), "transition" in i.fn || (i.fn.transition = function(e) {
			"string" != typeof e && (e += "ms");
			for (var a = 0; a < this.length; a++) {
				var t = this[a].style;
				t.webkitTransitionDuration = t.MsTransitionDuration = t.msTransitionDuration = t.MozTransitionDuration = t.OTransitionDuration =
					t.transitionDuration = e
			}
			return this
		})), window.Swiper = t
}(), "undefined" != typeof module ? module.exports = window.Swiper : "function" == typeof define && define.amd &&
	define([], function() {
		"use strict";
		return window.Swiper
	});
//# sourceMappingURL=maps/swiper.jquery.min.js.map

/*jquery.lazyload.min.js*/
/*!
 * Lazy Load - jQuery plugin for lazy loading images
 *
 * Copyright (c) 2007-2015 Mika Tuupola
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Project home:
 *   http://www.appelsiini.net/projects/lazyload
 *
 * Version:  1.9.7
 *
 */
var lazyloadbg_set = $('input[name=lazyloadbg]').val(),
	lazyloadbg = lazyloadbg_set ? lazyloadbg_set : M['tem'] + '/min/img/loading.gif',
	lazyloadbg_base64 =
	"";
if (!!window.ActiveXObject || "ActiveXObject" in window || ucBro || lazyloadbg == 'base64') lazyloadbg =
	lazyloadbg_base64;
(function($, window, document, undefined) {
	var $window = $(window);

	$.fn.lazyload = function(options) {
		var elements = this;
		var $container;
		var settings = {
			threshold: 30,
			failure_limit: 0,
			event: "scroll",
			effect: "fadeIn",
			effect_speed: null,
			container: window,
			data_attribute: "original",
			data_srcset: 'srcset',
			skip_invisible: true,
			appear: null,
			load: null,
			placeholder: lazyloadbg
		};

		function update() {
			var counter = 0;

			elements.each(function() {
				var $this = $(this);
				if (settings.skip_invisible && !$this.is(":visible")) {
					return;
				}
				if ($.abovethetop(this, settings) ||
					$.leftofbegin(this, settings)) {
					/* Nothing. */
				} else if (!$.belowthefold(this, settings) &&
					!$.rightoffold(this, settings)) {
					$this.trigger("appear");
					/* if we found an image we'll load, reset the counter */
					counter = 0;
				} else {
					if (++counter > settings.failure_limit) {
						return false;
					}
				}
			});

		}

		if (options) {
			/* Maintain BC for a couple of versions. */
			if (undefined !== options.failurelimit) {
				options.failure_limit = options.failurelimit;
				delete options.failurelimit;
			}
			if (undefined !== options.effectspeed) {
				options.effect_speed = options.effectspeed;
				delete options.effectspeed;
			}

			$.extend(settings, options);
		}

		/* Cache container as jQuery as object. */
		$container = (settings.container === undefined ||
			settings.container === window) ? $window : $(settings.container);

		/* Fire one scroll event per scroll. Not one scroll event per image. */
		if (0 === settings.event.indexOf("scroll")) {
			$container.on(settings.event, function() {
				return update();
			});
		}
		if (settings.placeholder == 'base64') settings.placeholder = lazyloadbg_base64;
		var placeholder_ok = settings.placeholder != lazyloadbg_base64 ? 1 : 0;
		this.each(function() {
			var self = this;
			var $self = $(self);
			self.loaded = false;

			/* If no src attribute given use data:uri. */
			if ($self.attr("src") === undefined || $self.attr("src") === false) {
				if ($self.is("img")) {
					$self.attr("src", settings.placeholder);
					if (placeholder_ok) $self.addClass('imgload');
				}
			}

			/* When appear is triggered load original image. */
			$self.one("appear", function() {
				if (!this.loaded) {
					if (settings.appear) {
						var elements_left = elements.length;
						settings.appear.call(self, elements_left, settings);
					}
					var original = $self.attr("data-" + settings.data_attribute),
						srcset = $self.attr("data-" + settings.data_srcset);
					$("<img />")
						.one("load", function() {
							$self.hide();
							if ($self.is("img") /* || $self.is("source") || $self.is("video") || $self.is("audio") || $self.is("iframe") || $self.is("script") || $self.is("link")*/ ) {
								$self.attr("src", original);
								if (srcset) $self.attr("srcset", srcset);
							} else {
								$self.css("background-image", "url('" + original + "')");
								if (srcset) $self.css("background-image", "-webkit-image-set(" + srcset + ")");
							}
							$self[settings.effect](settings.effect_speed);
							$self.one('load', function() {
								$self.removeClass('imgload');
							});

							self.loaded = true;

							/* Remove image from array so it is not looped next time. */
							var temp = $.grep(elements, function(element) {
								return !element.loaded;
							});
							elements = $(temp);

							if (settings.load) {
								var elements_left = elements.length;
								settings.load.call(self, elements_left, settings);
							}
						}).attr({
							src: original,
							srcset: srcset
						}).removeClass('imgload');
				}
			});

			/* When wanted event is triggered load original image */
			/* by triggering appear.                              */
			if (0 !== settings.event.indexOf("scroll")) {
				$self.on(settings.event, function() {
					if (!self.loaded) {
						$self.trigger("appear");
					}
				});
			}
		});

		/* Check if something appears when window is resized. */
		$window.on("resize", function() {
			update();
		});

		/* With IOS5 force loading images when navigating with back button. */
		/* Non optimal workaround. */
		if ((/(?:iphone|ipod|ipad).*os 5/gi).test(navigator.appVersion)) {
			$window.on("pageshow", function(event) {
				if (event.originalEvent && event.originalEvent.persisted) {
					elements.each(function() {
						$(this).trigger("appear");
					});
				}
			});
		}

		/* Force initial check if images should appear. */
		$(document).ready(function() {
			update();
		});

		return this;
	};

	/* Convenience methods in jQuery namespace.           */
	/* Use as  $.belowthefold(element, {threshold : 100, container : window}) */

	$.belowthefold = function(element, settings) {
		var fold;

		if (settings.container === undefined || settings.container === window) {
			fold = (window.innerHeight ? window.innerHeight : $window.height()) + $window.scrollTop();
		} else {
			fold = $(settings.container).offset().top + $(settings.container).height();
		}

		return fold <= $(element).offset().top - settings.threshold;
	};

	$.rightoffold = function(element, settings) {
		var fold;

		if (settings.container === undefined || settings.container === window) {
			fold = $window.width() + $window.scrollLeft();
		} else {
			fold = $(settings.container).offset().left + $(settings.container).width();
		}

		return fold <= $(element).offset().left - settings.threshold;
	};

	$.abovethetop = function(element, settings) {
		var fold;

		if (settings.container === undefined || settings.container === window) {
			fold = $window.scrollTop();
		} else {
			fold = $(settings.container).offset().top;
		}

		return fold >= $(element).offset().top + settings.threshold + $(element).height();
	};

	$.leftofbegin = function(element, settings) {
		var fold;

		if (settings.container === undefined || settings.container === window) {
			fold = $window.scrollLeft();
		} else {
			fold = $(settings.container).offset().left;
		}

		return fold >= $(element).offset().left + settings.threshold + $(element).width();
	};

	$.inviewport = function(element, settings) {
		return !$.rightoffold(element, settings) && !$.leftofbegin(element, settings) &&
			!$.belowthefold(element, settings) && !$.abovethetop(element, settings);
	};

	/* Custom selectors for your convenience.   */
	/* Use as $("img:below-the-fold").something() or */
	/* $("img").filter(":below-the-fold").something() which is faster */

	$.extend($.expr[":"], {
		"below-the-fold": function(a) {
			return $.belowthefold(a, {
				threshold: 0
			});
		},
		"above-the-top": function(a) {
			return !$.belowthefold(a, {
				threshold: 0
			});
		},
		"right-of-screen": function(a) {
			return $.rightoffold(a, {
				threshold: 0
			});
		},
		"left-of-screen": function(a) {
			return !$.rightoffold(a, {
				threshold: 0
			});
		},
		"in-viewport": function(a) {
			return $.inviewport(a, {
				threshold: 0
			});
		},
		/* Maintain BC for couple of versions. */
		"above-the-fold": function(a) {
			return !$.belowthefold(a, {
				threshold: 0
			});
		},
		"right-of-fold": function(a) {
			return $.rightoffold(a, {
				threshold: 0
			});
		},
		"left-of-fold": function(a) {
			return !$.rightoffold(a, {
				threshold: 0
			});
		}
	});

})(jQuery, window, document);

/*lightgallery-all.min.js*/
/*! lightgallery - v1.2.22 - 2016-07-20
 * http://sachinchoolur.github.io/lightGallery/
 * Copyright (c) 2016 Sachin N; Licensed Apache 2.0 */
! function(a, b, c, d) {
	"use strict";

	function e(b, d) {
		if (this.el = b, this.$el = a(b), this.s = a.extend({}, f, d), this.s.dynamic && "undefined" !== this.s.dynamicEl &&
			this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) throw "When using dynamic mode, you must also define dynamicEl as an Array.";
		return this.modules = {}, this.lGalleryOn = !1, this.lgBusy = !1, this.hideBartimeout = !1, this.isTouch =
			"ontouchstart" in c.documentElement, this.s.slideEndAnimatoin && (this.s.hideControlOnEnd = !1), this.s.dynamic ?
			this.$items = this.s.dynamicEl : "this" === this.s.selector ? this.$items = this.$el : "" !== this.s.selector ? this
			.s.selectWithin ? this.$items = a(this.s.selectWithin).find(this.s.selector) : this.$items = this.$el.find(a(this.s.selector)) :
			this.$items = this.$el.children(), this.$slide = "", this.$outer = "", this.init(), this
	}
	var f = {
		mode: "lg-slide",
		cssEasing: "ease",
		easing: "linear",
		speed: 600,
		height: "100%",
		width: "100%",
		addClass: "",
		startClass: "lg-start-zoom",
		backdropDuration: 150,
		hideBarsDelay: 6e3,
		useLeft: !1,
		closable: !0,
		loop: !0,
		escKey: !0,
		keyPress: !0,
		controls: !0,
		slideEndAnimatoin: !0,
		hideControlOnEnd: !1,
		mousewheel: !0,
		getCaptionFromTitleOrAlt: !0,
		appendSubHtmlTo: ".lg-sub-html",
		subHtmlSelectorRelative: !1,
		preload: 1,
		showAfterLoad: !0,
		selector: "",
		selectWithin: "",
		nextHtml: "",
		prevHtml: "",
		index: !1,
		iframeMaxWidth: "100%",
		download: !0,
		counter: !0,
		appendCounterTo: ".lg-toolbar",
		swipeThreshold: 50,
		enableSwipe: !0,
		enableDrag: !0,
		dynamic: !1,
		dynamicEl: [],
		galleryId: 1
	};
	e.prototype.init = function() {
		var c = this;
		c.s.preload > c.$items.length && (c.s.preload = c.$items.length);
		var d = b.location.hash;
		d.indexOf("lg=" + this.s.galleryId) > 0 && (c.index = parseInt(d.split("&slide=")[1], 10), a("body").addClass(
			"lg-from-hash"), a("body").hasClass("lg-on") || (setTimeout(function() {
			c.build(c.index)
		}), a("body").addClass("lg-on"))), c.s.dynamic ? (c.$el.trigger("onBeforeOpen.lg"), c.index = c.s.index || 0, a(
			"body").hasClass("lg-on") || setTimeout(function() {
			c.build(c.index), a("body").addClass("lg-on")
		})) : c.$items.on("click.lgcustom", function(b) {
			try {
				b.preventDefault(), b.preventDefault()
			} catch (a) {
				b.returnValue = !1
			}
			c.$el.trigger("onBeforeOpen.lg"), c.index = c.s.index || c.$items.index(this), a("body").hasClass("lg-on") || (c.build(
				c.index), a("body").addClass("lg-on"))
		})
	}, e.prototype.build = function(b) {
		var c = this;
		c.structure(), a.each(a.fn.lightGallery.modules, function(b) {
			c.modules[b] = new a.fn.lightGallery.modules[b](c.el)
		}), c.slide(b, !1, !1), c.s.keyPress && c.keyPress(), c.$items.length > 1 && (c.arrow(), setTimeout(function() {
			c.enableDrag(), c.enableSwipe()
		}, 50), c.s.mousewheel && c.mousewheel()), c.counter(), c.closeGallery(), c.$el.trigger("onAfterOpen.lg")
	}, e.prototype.structure = function() {
		var c, d = "",
			e = "",
			f = 0,
			g = "",
			h = this;
		for (a("body").append('<div class="lg-backdrop"></div>'), a(".lg-backdrop").css("transition-duration", this.s.backdropDuration +
				"ms"), f = 0; f < this.$items.length; f++) d += '<div class="lg-item"></div>';
		if (this.s.controls && this.$items.length > 1 && (e = '<div class="lg-actions"><div class="lg-prev lg-icon">' + this
				.s.prevHtml + '</div><div class="lg-next lg-icon">' + this.s.nextHtml + "</div></div>"), ".lg-sub-html" === this.s
			.appendSubHtmlTo && (g = '<div class="lg-sub-html"></div>'), c = '<div class="lg-outer ' + this.s.addClass + " " +
			this.s.startClass + '"><div class="lg" style="width:' + this.s.width + "; height:" + this.s.height +
			'"><div class="lg-inner">' + d + '</div><div class="lg-toolbar group"><span class="lg-close lg-icon"></span></div>' +
			e + g + "</div></div>", a("body").append(c), this.$outer = a(".lg-outer"), this.$slide = this.$outer.find(
				".lg-item"), this.s.useLeft ? (this.$outer.addClass("lg-use-left"), this.s.mode = "lg-slide") : this.$outer.addClass(
				"lg-use-css3"), h.setTop(), a(b).on("resize.lg orientationchange.lg", function() {
				setTimeout(function() {
					h.setTop()
				}, 100)
			}), this.$slide.eq(this.index).addClass("lg-current"), this.doCss() ? this.$outer.addClass("lg-css3") : (this.$outer
				.addClass("lg-css"), this.s.speed = 0), this.$outer.addClass(this.s.mode), this.s.enableDrag && this.$items.length >
			1 && this.$outer.addClass("lg-grab"), this.s.showAfterLoad && this.$outer.addClass("lg-show-after-load"), this.doCss()
		) {
			var i = this.$outer.find(".lg-inner");
			i.css("transition-timing-function", this.s.cssEasing), i.css("transition-duration", this.s.speed + "ms")
		}
		a(".lg-backdrop").addClass("in"), setTimeout(function() {
			h.$outer.addClass("lg-visible")
		}, this.s.backdropDuration), this.s.download && this.$outer.find(".lg-toolbar").append(
			'<a id="lg-download" target="_blank" download class="lg-download lg-icon"></a>'), this.prevScrollTop = a(b).scrollTop()
	}, e.prototype.setTop = function() {
		if ("100%" !== this.s.height) {
			var c = a(b).height(),
				d = (c - parseInt(this.s.height, 10)) / 2,
				e = this.$outer.find(".lg");
			c >= parseInt(this.s.height, 10) ? e.css("top", d + "px") : e.css("top", "0px")
		}
	}, e.prototype.doCss = function() {
		var a = function() {
			var a = ["transition", "MozTransition", "WebkitTransition", "OTransition", "msTransition", "KhtmlTransition"],
				b = c.documentElement,
				d = 0;
			for (d = 0; d < a.length; d++)
				if (a[d] in b.style) return !0
		};
		return !!a()
	}, e.prototype.isVideo = function(a, b) {
		var c;
		if (c = this.s.dynamic ? this.s.dynamicEl[b].html : this.$items.eq(b).attr("data-html"), !a && c) return {
			html5: !0
		};
		var d = a.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i),
			e = a.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i),
			f = a.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i),
			g = a.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);
		return d ? {
			youtube: d
		} : e ? {
			vimeo: e
		} : f ? {
			dailymotion: f
		} : g ? {
			vk: g
		} : void 0
	}, e.prototype.counter = function() {
		this.s.counter && a(this.s.appendCounterTo).append('<div id="lg-counter"><span id="lg-counter-current">' + (parseInt(
			this.index, 10) + 1) + '</span> / <span id="lg-counter-all">' + this.$items.length + "</span></div>")
	}, e.prototype.addHtml = function(b) {
		var c, d, e = null;
		if (this.s.dynamic ? this.s.dynamicEl[b].subHtmlUrl ? c = this.s.dynamicEl[b].subHtmlUrl : e = this.s.dynamicEl[b].subHtml :
			(d = this.$items.eq(b), d.attr("data-sub-html-url") ? c = d.attr("data-sub-html-url") : (e = d.attr("data-sub-html"),
				this.s.getCaptionFromTitleOrAlt && !e && (e = d.attr("title") || d.find("img").first().attr("alt")))), !c)
			if ("undefined" != typeof e && null !== e) {
				var f = e.substring(0, 1);
				"." !== f && "#" !== f || (e = this.s.subHtmlSelectorRelative && !this.s.dynamic ? d.find(e).html() : a(e).html())
			} else e = "";
		".lg-sub-html" === this.s.appendSubHtmlTo ? c ? this.$outer.find(this.s.appendSubHtmlTo).load(c) : this.$outer.find(
				this.s.appendSubHtmlTo).html(e) : c ? this.$slide.eq(b).load(c) : this.$slide.eq(b).append(e), "undefined" !=
			typeof e && null !== e && ("" === e ? this.$outer.find(this.s.appendSubHtmlTo).addClass("lg-empty-html") : this.$outer
				.find(this.s.appendSubHtmlTo).removeClass("lg-empty-html")), this.$el.trigger("onAfterAppendSubHtml.lg", [b])
	}, e.prototype.preload = function(a) {
		var b = 1,
			c = 1;
		for (b = 1; b <= this.s.preload && !(b >= this.$items.length - a); b++) this.loadContent(a + b, !1, 0);
		for (c = 1; c <= this.s.preload && !(a - c < 0); c++) this.loadContent(a - c, !1, 0)
	}, e.prototype.loadContent = function(c, d, e) {
		var f, g, h, i, j, k, l = this,
			m = !1,
			n = function(c) {
				for (var d = [], e = [], f = 0; f < c.length; f++) {
					var h = c[f].split(" ");
					"" === h[0] && h.splice(0, 1), e.push(h[0]), d.push(h[1])
				}
				for (var i = a(b).width(), j = 0; j < d.length; j++)
					if (parseInt(d[j], 10) > i) {
						g = e[j];
						break
					}
			};
		if (l.s.dynamic) {
			if (l.s.dynamicEl[c].poster && (m = !0, h = l.s.dynamicEl[c].poster), k = l.s.dynamicEl[c].html, g = l.s.dynamicEl[
					c].src, l.s.dynamicEl[c].responsive) {
				var o = l.s.dynamicEl[c].responsive.split(",");
				n(o)
			}
			i = l.s.dynamicEl[c].srcset, j = l.s.dynamicEl[c].sizes
		} else {
			if (l.$items.eq(c).attr("data-poster") && (m = !0, h = l.$items.eq(c).attr("data-poster")), k = l.$items.eq(c).attr(
					"data-html"), g = l.$items.eq(c).attr("href") || l.$items.eq(c).attr("data-src"), l.$items.eq(c).attr(
					"data-responsive")) {
				var p = l.$items.eq(c).attr("data-responsive").split(",");
				n(p)
			}
			i = l.$items.eq(c).attr("data-srcset"), j = l.$items.eq(c).attr("data-sizes")
		}
		var q = !1;
		l.s.dynamic ? l.s.dynamicEl[c].iframe && (q = !0) : "true" === l.$items.eq(c).attr("data-iframe") && (q = !0);
		var r = l.isVideo(g, c);
		if (!l.$slide.eq(c).hasClass("lg-loaded")) {
			if (q) l.$slide.eq(c).prepend('<div class="lg-video-cont" style="max-width:' + l.s.iframeMaxWidth +
				'"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="' + g +
				'"  allowfullscreen="true"></iframe></div></div>');
			else if (m) {
				var s = "";
				s = r && r.youtube ? "lg-has-youtube" : r && r.vimeo ? "lg-has-vimeo" : "lg-has-html5", l.$slide.eq(c).prepend(
					'<div class="lg-video-cont ' + s +
					' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="' + h +
					'" /></div></div>')
			} else r ? (l.$slide.eq(c).prepend('<div class="lg-video-cont "><div class="lg-video"></div></div>'), l.$el.trigger(
				"hasVideo.lg", [c, g, k])) : l.$slide.eq(c).prepend(
				'<div class="lg-img-wrap"><img class="lg-object lg-image" src="' + g + '" /></div>');
			if (l.$el.trigger("onAferAppendSlide.lg", [c]), f = l.$slide.eq(c).find(".lg-object"), j && f.attr("sizes", j), i) {
				f.attr("srcset", i);
				try {
					picturefill({
						elements: [f[0]]
					})
				} catch (a) {
					console.error("Make sure you have included Picturefill version 2")
				}
			}
			".lg-sub-html" !== this.s.appendSubHtmlTo && l.addHtml(c), l.$slide.eq(c).addClass("lg-loaded")
		}
		l.$slide.eq(c).find(".lg-object").on("load.lg error.lg", function() {
			var b = 0;
			e && !a("body").hasClass("lg-from-hash") && (b = e), setTimeout(function() {
				l.$slide.eq(c).addClass("lg-complete"), l.$el.trigger("onSlideItemLoad.lg", [c, e || 0])
			}, b)
		}), r && r.html5 && !m && l.$slide.eq(c).addClass("lg-complete"), d === !0 && (l.$slide.eq(c).hasClass(
			"lg-complete") ? l.preload(c) : l.$slide.eq(c).find(".lg-object").on("load.lg error.lg", function() {
			l.preload(c)
		}))
	}, e.prototype.slide = function(b, c, d) {
		var e = this.$outer.find(".lg-current").index(),
			f = this;
		if (!f.lGalleryOn || e !== b) {
			var g = this.$slide.length,
				h = f.lGalleryOn ? this.s.speed : 0,
				i = !1,
				j = !1;
			if (!f.lgBusy) {
				if (this.s.download) {
					var k;
					k = f.s.dynamic ? f.s.dynamicEl[b].downloadUrl !== !1 && (f.s.dynamicEl[b].downloadUrl || f.s.dynamicEl[b].src) :
						"false" !== f.$items.eq(b).attr("data-download-url") && (f.$items.eq(b).attr("data-download-url") || f.$items.eq(
							b).attr("href") || f.$items.eq(b).attr("data-src")), k ? (a("#lg-download").attr("href", k), f.$outer.removeClass(
							"lg-hide-download")) : f.$outer.addClass("lg-hide-download")
				}
				if (this.$el.trigger("onBeforeSlide.lg", [e, b, c, d]), f.lgBusy = !0, clearTimeout(f.hideBartimeout),
					".lg-sub-html" === this.s.appendSubHtmlTo && setTimeout(function() {
						f.addHtml(b)
					}, h), this.arrowDisable(b), c) {
					var l = b - 1,
						m = b + 1;
					0 === b && e === g - 1 ? (m = 0, l = g - 1) : b === g - 1 && 0 === e && (m = 0, l = g - 1), this.$slide.removeClass(
						"lg-prev-slide lg-current lg-next-slide"), f.$slide.eq(l).addClass("lg-prev-slide"), f.$slide.eq(m).addClass(
						"lg-next-slide"), f.$slide.eq(b).addClass("lg-current")
				} else f.$outer.addClass("lg-no-trans"), this.$slide.removeClass("lg-prev-slide lg-next-slide"), b < e ? (j = !0,
					0 !== b || e !== g - 1 || d || (j = !1, i = !0)) : b > e && (i = !0, b !== g - 1 || 0 !== e || d || (j = !0, i = !
					1)), j ? (this.$slide.eq(b).addClass("lg-prev-slide"), this.$slide.eq(e).addClass("lg-next-slide")) : i && (this
					.$slide.eq(b).addClass("lg-next-slide"), this.$slide.eq(e).addClass("lg-prev-slide")), setTimeout(function() {
					f.$slide.removeClass("lg-current"), f.$slide.eq(b).addClass("lg-current"), f.$outer.removeClass("lg-no-trans")
				}, 50);
				f.lGalleryOn ? (setTimeout(function() {
					f.loadContent(b, !0, 0)
				}, this.s.speed + 50), setTimeout(function() {
					f.lgBusy = !1, f.$el.trigger("onAfterSlide.lg", [e, b, c, d])
				}, this.s.speed)) : (f.loadContent(b, !0, f.s.backdropDuration), f.lgBusy = !1, f.$el.trigger("onAfterSlide.lg",
					[e, b, c, d])), f.lGalleryOn = !0, this.s.counter && a("#lg-counter-current").text(b + 1)
			}
		}
	}, e.prototype.goToNextSlide = function(a) {
		var b = this;
		b.lgBusy || (b.index + 1 < b.$slide.length ? (b.index++, b.$el.trigger("onBeforeNextSlide.lg", [b.index]), b.slide(b
			.index, a, !1)) : b.s.loop ? (b.index = 0, b.$el.trigger("onBeforeNextSlide.lg", [b.index]), b.slide(b.index, a,
			!1)) : b.s.slideEndAnimatoin && (b.$outer.addClass("lg-right-end"), setTimeout(function() {
			b.$outer.removeClass("lg-right-end")
		}, 400)))
	}, e.prototype.goToPrevSlide = function(a) {
		var b = this;
		b.lgBusy || (b.index > 0 ? (b.index--, b.$el.trigger("onBeforePrevSlide.lg", [b.index, a]), b.slide(b.index, a, !1)) :
			b.s.loop ? (b.index = b.$items.length - 1, b.$el.trigger("onBeforePrevSlide.lg", [b.index, a]), b.slide(b.index, a,
				!1)) : b.s.slideEndAnimatoin && (b.$outer.addClass("lg-left-end"), setTimeout(function() {
				b.$outer.removeClass("lg-left-end")
			}, 400)))
	}, e.prototype.keyPress = function() {
		var c = this;
		this.$items.length > 1 && a(b).on("keyup.lg", function(a) {
			c.$items.length > 1 && (37 === a.keyCode && (a.preventDefault(), c.goToPrevSlide()), 39 === a.keyCode && (a.preventDefault(),
				c.goToNextSlide()))
		}), a(b).on("keydown.lg", function(a) {
			c.s.escKey === !0 && 27 === a.keyCode && (a.preventDefault(), c.$outer.hasClass("lg-thumb-open") ? c.$outer.removeClass(
				"lg-thumb-open") : c.destroy())
		})
	}, e.prototype.arrow = function() {
		var a = this;
		this.$outer.find(".lg-prev").on("click.lg", function() {
			a.goToPrevSlide()
		}), this.$outer.find(".lg-next").on("click.lg", function() {
			a.goToNextSlide()
		})
	}, e.prototype.arrowDisable = function(a) {
		!this.s.loop && this.s.hideControlOnEnd && (a + 1 < this.$slide.length ? this.$outer.find(".lg-next").removeAttr(
			"disabled").removeClass("disabled") : this.$outer.find(".lg-next").attr("disabled", "disabled").addClass(
			"disabled"), a > 0 ? this.$outer.find(".lg-prev").removeAttr("disabled").removeClass("disabled") : this.$outer.find(
			".lg-prev").attr("disabled", "disabled").addClass("disabled"))
	}, e.prototype.setTranslate = function(a, b, c) {
		this.s.useLeft ? a.css("left", b) : a.css({
			transform: "translate3d(" + b + "px, " + c + "px, 0px)"
		})
	}, e.prototype.touchMove = function(b, c) {
		var d = c - b;
		Math.abs(d) > 15 && (this.$outer.addClass("lg-dragging"), this.setTranslate(this.$slide.eq(this.index), d, 0), this.setTranslate(
			a(".lg-prev-slide"), -this.$slide.eq(this.index).width() + d, 0), this.setTranslate(a(".lg-next-slide"), this.$slide
			.eq(this.index).width() + d, 0))
	}, e.prototype.touchEnd = function(a) {
		var b = this;
		"lg-slide" !== b.s.mode && b.$outer.addClass("lg-slide"), this.$slide.not(
			".lg-current, .lg-prev-slide, .lg-next-slide").css("opacity", "0"), setTimeout(function() {
			b.$outer.removeClass("lg-dragging"), a < 0 && Math.abs(a) > b.s.swipeThreshold ? b.goToNextSlide(!0) : a > 0 &&
				Math.abs(a) > b.s.swipeThreshold ? b.goToPrevSlide(!0) : Math.abs(a) < 5 && b.$el.trigger("onSlideClick.lg"), b.$slide
				.removeAttr("style")
		}), setTimeout(function() {
			b.$outer.hasClass("lg-dragging") || "lg-slide" === b.s.mode || b.$outer.removeClass("lg-slide")
		}, b.s.speed + 100)
	}, e.prototype.enableSwipe = function() {
		var a = this,
			b = 0,
			c = 0,
			d = !1;
		a.s.enableSwipe && a.isTouch && a.doCss() && (a.$slide.on("touchstart.lg", function(c) {
			a.$outer.hasClass("lg-zoomed") || a.lgBusy || (c.preventDefault(), a.manageSwipeClass(), b = c.originalEvent.targetTouches[
				0].pageX)
		}), a.$slide.on("touchmove.lg", function(e) {
			a.$outer.hasClass("lg-zoomed") || (e.preventDefault(), c = e.originalEvent.targetTouches[0].pageX, a.touchMove(b,
				c), d = !0)
		}), a.$slide.on("touchend.lg", function() {
			a.$outer.hasClass("lg-zoomed") || (d ? (d = !1, a.touchEnd(c - b)) : a.$el.trigger("onSlideClick.lg"))
		}))
	}, e.prototype.enableDrag = function() {
		var c = this,
			d = 0,
			e = 0,
			f = !1,
			g = !1;
		c.s.enableDrag && !c.isTouch && c.doCss() && (c.$slide.on("mousedown.lg", function(b) {
			c.$outer.hasClass("lg-zoomed") || (a(b.target).hasClass("lg-object") || a(b.target).hasClass("lg-video-play")) &&
				(b.preventDefault(), c.lgBusy || (c.manageSwipeClass(), d = b.pageX, f = !0, c.$outer.scrollLeft += 1, c.$outer
					.scrollLeft -= 1, c.$outer.removeClass("lg-grab").addClass("lg-grabbing"), c.$el.trigger("onDragstart.lg")))
		}), a(b).on("mousemove.lg", function(a) {
			f && (g = !0, e = a.pageX, c.touchMove(d, e), c.$el.trigger("onDragmove.lg"))
		}), a(b).on("mouseup.lg", function(b) {
			g ? (g = !1, c.touchEnd(e - d), c.$el.trigger("onDragend.lg")) : (a(b.target).hasClass("lg-object") || a(b.target)
				.hasClass("lg-video-play")) && c.$el.trigger("onSlideClick.lg"), f && (f = !1, c.$outer.removeClass(
				"lg-grabbing").addClass("lg-grab"))
		}))
	}, e.prototype.manageSwipeClass = function() {
		var a = this.index + 1,
			b = this.index - 1,
			c = this.$slide.length;
		this.s.loop && (0 === this.index ? b = c - 1 : this.index === c - 1 && (a = 0)), this.$slide.removeClass(
			"lg-next-slide lg-prev-slide"), b > -1 && this.$slide.eq(b).addClass("lg-prev-slide"), this.$slide.eq(a).addClass(
			"lg-next-slide")
	}, e.prototype.mousewheel = function() {
		var a = this;
		a.$outer.on("mousewheel.lg", function(b) {
			b.deltaY && (b.deltaY > 0 ? a.goToPrevSlide() : a.goToNextSlide(), b.preventDefault())
		})
	}, e.prototype.closeGallery = function() {
		var b = this,
			c = !1;
		this.$outer.find(".lg-close").on("click.lg", function() {
			b.destroy()
		}), b.s.closable && (b.$outer.on("mousedown.lg", function(b) {
			c = !!(a(b.target).is(".lg-outer") || a(b.target).is(".lg-item ") || a(b.target).is(".lg-img-wrap"))
		}), b.$outer.on("mouseup.lg", function(d) {
			(a(d.target).is(".lg-outer") || a(d.target).is(".lg-item ") || a(d.target).is(".lg-img-wrap") && c) && (b.$outer
				.hasClass("lg-dragging") || b.destroy())
		}))
	}, e.prototype.destroy = function(c) {
		var d = this;
		c || d.$el.trigger("onBeforeClose.lg"), a(b).scrollTop(d.prevScrollTop), c && (d.s.dynamic || this.$items.off(
				"click.lg click.lgcustom"), a.removeData(d.el, "lightGallery")), this.$el.off(".lg.tm"), a.each(a.fn.lightGallery.modules,
				function(a) {
					d.modules[a] && d.modules[a].destroy()
				}), this.lGalleryOn = !1, clearTimeout(d.hideBartimeout), this.hideBartimeout = !1, a(b).off(".lg"), a("body").removeClass(
				"lg-on lg-from-hash"), d.$outer && d.$outer.removeClass("lg-visible"), a(".lg-backdrop").removeClass("in"),
			setTimeout(function() {
				d.$outer && d.$outer.remove(), a(".lg-backdrop").remove(), c || d.$el.trigger("onCloseAfter.lg")
			}, d.s.backdropDuration + 50)
	}, a.fn.lightGallery = function(b) {
		return this.each(function() {
			if (a.data(this, "lightGallery")) try {
				a(this).data("lightGallery").init()
			} catch (a) {
				console.error("lightGallery has not initiated properly")
			} else a.data(this, "lightGallery", new e(this, b))
		})
	}, a.fn.lightGallery.modules = {}
}(jQuery, window, document),
function(a, b, c, d) {
	"use strict";
	var e = {
			autoplay: !1,
			pause: 5e3,
			progressBar: !0,
			fourceAutoplay: !1,
			autoplayControls: !0,
			appendAutoplayControlsTo: ".lg-toolbar"
		},
		f = function(b) {
			return this.core = a(b).data("lightGallery"), this.$el = a(b), !(this.core.$items.length < 2) && (this.core.s = a.extend({},
					e, this.core.s), this.interval = !1, this.fromAuto = !0, this.canceledOnTouch = !1, this.fourceAutoplayTemp =
				this.core.s.fourceAutoplay, this.core.doCss() || (this.core.s.progressBar = !1), this.init(), this)
		};
	f.prototype.init = function() {
		var a = this;
		a.core.s.autoplayControls && a.controls(), a.core.s.progressBar && a.core.$outer.find(".lg").append(
				'<div class="lg-progress-bar"><div class="lg-progress"></div></div>'), a.progress(), a.core.s.autoplay && a.startlAuto(),
			a.$el.on("onDragstart.lg.tm touchstart.lg.tm", function() {
				a.interval && (a.cancelAuto(), a.canceledOnTouch = !0)
			}), a.$el.on("onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm", function() {
				!a.interval && a.canceledOnTouch && (a.startlAuto(), a.canceledOnTouch = !1)
			})
	}, f.prototype.progress = function() {
		var a, b, c = this;
		c.$el.on("onBeforeSlide.lg.tm", function() {
			c.core.s.progressBar && c.fromAuto && (a = c.core.$outer.find(".lg-progress-bar"), b = c.core.$outer.find(
				".lg-progress"), c.interval && (b.removeAttr("style"), a.removeClass("lg-start"), setTimeout(function() {
				b.css("transition", "width " + (c.core.s.speed + c.core.s.pause) + "ms ease 0s"), a.addClass("lg-start")
			}, 20))), c.fromAuto || c.core.s.fourceAutoplay || c.cancelAuto(), c.fromAuto = !1
		})
	}, f.prototype.controls = function() {
		var b = this,
			c = '<span class="lg-autoplay-button lg-icon"></span>';
		a(this.core.s.appendAutoplayControlsTo).append(c), b.core.$outer.find(".lg-autoplay-button").on("click.lg", function() {
			a(b.core.$outer).hasClass("lg-show-autoplay") ? (b.cancelAuto(), b.core.s.fourceAutoplay = !1) : b.interval || (b
				.startlAuto(), b.core.s.fourceAutoplay = b.fourceAutoplayTemp)
		})
	}, f.prototype.startlAuto = function() {
		var a = this;
		a.core.$outer.find(".lg-progress").css("transition", "width " + (a.core.s.speed + a.core.s.pause) + "ms ease 0s"), a
			.core.$outer.addClass("lg-show-autoplay"), a.core.$outer.find(".lg-progress-bar").addClass("lg-start"), a.interval =
			setInterval(function() {
				a.core.index + 1 < a.core.$items.length ? a.core.index++ : a.core.index = 0, a.fromAuto = !0, a.core.slide(a.core
					.index, !1, !1)
			}, a.core.s.speed + a.core.s.pause)
	}, f.prototype.cancelAuto = function() {
		clearInterval(this.interval), this.interval = !1, this.core.$outer.find(".lg-progress").removeAttr("style"), this.core
			.$outer.removeClass("lg-show-autoplay"), this.core.$outer.find(".lg-progress-bar").removeClass("lg-start")
	}, f.prototype.destroy = function() {
		this.cancelAuto(), this.core.$outer.find(".lg-progress-bar").remove()
	}, a.fn.lightGallery.modules.autoplay = f
}(jQuery, window, document),
function(a, b, c, d) {
	"use strict";
	var e = {
			fullScreen: !0
		},
		f = function(b) {
			return this.core = a(b).data("lightGallery"), this.$el = a(b), this.core.s = a.extend({}, e, this.core.s), this.init(),
				this
		};
	f.prototype.init = function() {
		var a = "";
		if (this.core.s.fullScreen) {
			if (!(c.fullscreenEnabled || c.webkitFullscreenEnabled || c.mozFullScreenEnabled || c.msFullscreenEnabled)) return;
			a = '<span class="lg-fullscreen lg-icon"></span>', this.core.$outer.find(".lg-toolbar").append(a), this.fullScreen()
		}
	}, f.prototype.requestFullscreen = function() {
		var a = c.documentElement;
		a.requestFullscreen ? a.requestFullscreen() : a.msRequestFullscreen ? a.msRequestFullscreen() : a.mozRequestFullScreen ?
			a.mozRequestFullScreen() : a.webkitRequestFullscreen && a.webkitRequestFullscreen()
	}, f.prototype.exitFullscreen = function() {
		c.exitFullscreen ? c.exitFullscreen() : c.msExitFullscreen ? c.msExitFullscreen() : c.mozCancelFullScreen ? c.mozCancelFullScreen() :
			c.webkitExitFullscreen && c.webkitExitFullscreen()
	}, f.prototype.fullScreen = function() {
		var b = this;
		a(c).on("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg", function() {
			b.core.$outer.toggleClass("lg-fullscreen-on")
		}), this.core.$outer.find(".lg-fullscreen").on("click.lg", function() {
			c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement || c.msFullscreenElement ? b.exitFullscreen() :
				b.requestFullscreen()
		})
	}, f.prototype.destroy = function() {
		this.exitFullscreen(), a(c).off(
			"fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg")
	}, a.fn.lightGallery.modules.fullscreen = f
}(jQuery, window, document),
function(a, b, c, d) {
	"use strict";
	var e = {
			pager: !1
		},
		f = function(b) {
			return this.core = a(b).data("lightGallery"), this.$el = a(b), this.core.s = a.extend({}, e, this.core.s), this.core
				.s.pager && this.core.$items.length > 1 && this.init(), this
		};
	f.prototype.init = function() {
		var b, c, d, e = this,
			f = "";
		if (e.core.$outer.find(".lg").append('<div class="lg-pager-outer"></div>'), e.core.s.dynamic)
			for (var g = 0; g < e.core.s.dynamicEl.length; g++) f +=
				'<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' +
				e.core.s.dynamicEl[g].thumb + '" /></div></span>';
		else e.core.$items.each(function() {
			f += e.core.s.exThumbImage ?
				'<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' +
				a(this).attr(e.core.s.exThumbImage) + '" /></div></span>' :
				'<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' +
				a(this).find("img").attr("src") + '" /></div></span>'
		});
		c = e.core.$outer.find(".lg-pager-outer"), c.html(f), b = e.core.$outer.find(".lg-pager-cont"), b.on(
			"click.lg touchend.lg",
			function() {
				var b = a(this);
				e.core.index = b.index(), e.core.slide(e.core.index, !1, !1)
			}), c.on("mouseover.lg", function() {
			clearTimeout(d), c.addClass("lg-pager-hover")
		}), c.on("mouseout.lg", function() {
			d = setTimeout(function() {
				c.removeClass("lg-pager-hover")
			})
		}), e.core.$el.on("onBeforeSlide.lg.tm", function(a, c, d) {
			b.removeClass("lg-pager-active"), b.eq(d).addClass("lg-pager-active")
		})
	}, f.prototype.destroy = function() {}, a.fn.lightGallery.modules.pager = f
}(jQuery, window, document),
function(a, b, c, d) {
	"use strict";
	var e = {
			thumbnail: !0,
			animateThumb: !0,
			currentPagerPosition: "middle",
			thumbWidth: 100,
			thumbContHeight: 100,
			thumbMargin: 5,
			exThumbImage: !1,
			showThumbByDefault: !0,
			toogleThumb: !0,
			pullCaptionUp: !0,
			enableThumbDrag: !0,
			enableThumbSwipe: !0,
			swipeThreshold: 50,
			loadYoutubeThumbnail: !0,
			youtubeThumbSize: 1,
			loadVimeoThumbnail: !0,
			vimeoThumbSize: "thumbnail_small",
			loadDailymotionThumbnail: !0
		},
		f = function(b) {
			return this.core = a(b).data("lightGallery"), this.core.s = a.extend({}, e, this.core.s), this.$el = a(b), this.$thumbOuter =
				null, this.thumbOuterWidth = 0, this.thumbTotalWidth = this.core.$items.length * (this.core.s.thumbWidth + this.core
					.s.thumbMargin), this.thumbIndex = this.core.index, this.left = 0, this.init(), this
		};
	f.prototype.init = function() {
		var a = this;
		this.core.s.thumbnail && this.core.$items.length > 1 && (this.core.s.showThumbByDefault && setTimeout(function() {
				a.core.$outer.addClass("lg-thumb-open")
			}, 700), this.core.s.pullCaptionUp && this.core.$outer.addClass("lg-pull-caption-up"), this.build(), this.core.s.animateThumb ?
			(this.core.s.enableThumbDrag && !this.core.isTouch && this.core.doCss() && this.enableThumbDrag(), this.core.s.enableThumbSwipe &&
				this.core.isTouch && this.core.doCss() && this.enableThumbSwipe(), this.thumbClickable = !1) : this.thumbClickable = !
			0, this.toogle(), this.thumbkeyPress())
	}, f.prototype.build = function() {
		function c(a, b, c) {
			var d, h = e.core.isVideo(a, c) || {},
				i = "";
			h.youtube || h.vimeo || h.dailymotion ? h.youtube ? d = e.core.s.loadYoutubeThumbnail ? "//img.youtube.com/vi/" + h
				.youtube[1] + "/" + e.core.s.youtubeThumbSize + ".jpg" : b : h.vimeo ? e.core.s.loadVimeoThumbnail ? (d =
					"//i.vimeocdn.com/video/error_" + g + ".jpg", i = h.vimeo[1]) : d = b : h.dailymotion && (d = e.core.s.loadDailymotionThumbnail ?
					"//www.dailymotion.com/thumbnail/video/" + h.dailymotion[1] : b) : d = b, f += '<div data-vimeo-id="' + i +
				'" class="lg-thumb-item" style="width:' + e.core.s.thumbWidth + "px; margin-right: " + e.core.s.thumbMargin +
				'px"><img src="' + d + '" /></div>', i = ""
		}
		var d, e = this,
			f = "",
			g = "",
			h = '<div class="lg-thumb-outer"><div class="lg-thumb group"></div></div>';
		switch (this.core.s.vimeoThumbSize) {
			case "thumbnail_large":
				g = "640";
				break;
			case "thumbnail_medium":
				g = "200x150";
				break;
			case "thumbnail_small":
				g = "100x75"
		}
		if (e.core.$outer.addClass("lg-has-thumb"), e.core.$outer.find(".lg").append(h), e.$thumbOuter = e.core.$outer.find(
				".lg-thumb-outer"), e.thumbOuterWidth = e.$thumbOuter.width(), e.core.s.animateThumb && e.core.$outer.find(
				".lg-thumb").css({
				width: e.thumbTotalWidth + "px",
				position: "relative"
			}), this.core.s.animateThumb && e.$thumbOuter.css("height", e.core.s.thumbContHeight + "px"), e.core.s.dynamic)
			for (var i = 0; i < e.core.s.dynamicEl.length; i++) c(e.core.s.dynamicEl[i].src, e.core.s.dynamicEl[i].thumb, i);
		else e.core.$items.each(function(b) {
			e.core.s.exThumbImage ? c(a(this).attr("href") || a(this).attr("data-src"), a(this).attr(e.core.s.exThumbImage),
				b) : c(a(this).attr("href") || a(this).attr("data-src"), a(this).find("img").attr("src"), b)
		});
		e.core.$outer.find(".lg-thumb").html(f), d = e.core.$outer.find(".lg-thumb-item"), d.each(function() {
			var b = a(this),
				c = b.attr("data-vimeo-id");
			c && a.getJSON("//www.vimeo.com/api/v2/video/" + c + ".json?callback=?", {
				format: "json"
			}, function(a) {
				b.find("img").attr("src", a[0][e.core.s.vimeoThumbSize])
			})
		}), d.eq(e.core.index).addClass("active"), e.core.$el.on("onBeforeSlide.lg.tm", function() {
			d.removeClass("active"), d.eq(e.core.index).addClass("active")
		}), d.on("click.lg touchend.lg", function() {
			var b = a(this);
			setTimeout(function() {
				(e.thumbClickable && !e.core.lgBusy || !e.core.doCss()) && (e.core.index = b.index(), e.core.slide(e.core.index,
					!1, !0))
			}, 50)
		}), e.core.$el.on("onBeforeSlide.lg.tm", function() {
			e.animateThumb(e.core.index)
		}), a(b).on("resize.lg.thumb orientationchange.lg.thumb", function() {
			setTimeout(function() {
				e.animateThumb(e.core.index), e.thumbOuterWidth = e.$thumbOuter.width()
			}, 200)
		})
	}, f.prototype.setTranslate = function(a) {
		this.core.$outer.find(".lg-thumb").css({
			transform: "translate3d(-" + a + "px, 0px, 0px)"
		})
	}, f.prototype.animateThumb = function(a) {
		var b = this.core.$outer.find(".lg-thumb");
		if (this.core.s.animateThumb) {
			var c;
			switch (this.core.s.currentPagerPosition) {
				case "left":
					c = 0;
					break;
				case "middle":
					c = this.thumbOuterWidth / 2 - this.core.s.thumbWidth / 2;
					break;
				case "right":
					c = this.thumbOuterWidth - this.core.s.thumbWidth
			}
			this.left = (this.core.s.thumbWidth + this.core.s.thumbMargin) * a - 1 - c, this.left > this.thumbTotalWidth - this
				.thumbOuterWidth && (this.left = this.thumbTotalWidth - this.thumbOuterWidth), this.left < 0 && (this.left = 0),
				this.core.lGalleryOn ? (b.hasClass("on") || this.core.$outer.find(".lg-thumb").css("transition-duration", this.core
					.s.speed + "ms"), this.core.doCss() || b.animate({
					left: -this.left + "px"
				}, this.core.s.speed)) : this.core.doCss() || b.css("left", -this.left + "px"), this.setTranslate(this.left)
		}
	}, f.prototype.enableThumbDrag = function() {
		var c = this,
			d = 0,
			e = 0,
			f = !1,
			g = !1,
			h = 0;
		c.$thumbOuter.addClass("lg-grab"), c.core.$outer.find(".lg-thumb").on("mousedown.lg.thumb", function(a) {
			c.thumbTotalWidth > c.thumbOuterWidth && (a.preventDefault(), d = a.pageX, f = !0, c.core.$outer.scrollLeft += 1,
				c.core.$outer.scrollLeft -= 1, c.thumbClickable = !1, c.$thumbOuter.removeClass("lg-grab").addClass(
					"lg-grabbing"))
		}), a(b).on("mousemove.lg.thumb", function(a) {
			f && (h = c.left, g = !0, e = a.pageX, c.$thumbOuter.addClass("lg-dragging"), h -= e - d, h > c.thumbTotalWidth -
				c.thumbOuterWidth && (h = c.thumbTotalWidth - c.thumbOuterWidth), h < 0 && (h = 0), c.setTranslate(h))
		}), a(b).on("mouseup.lg.thumb", function() {
			g ? (g = !1, c.$thumbOuter.removeClass("lg-dragging"), c.left = h, Math.abs(e - d) < c.core.s.swipeThreshold && (
				c.thumbClickable = !0)) : c.thumbClickable = !0, f && (f = !1, c.$thumbOuter.removeClass("lg-grabbing").addClass(
				"lg-grab"))
		})
	}, f.prototype.enableThumbSwipe = function() {
		var a = this,
			b = 0,
			c = 0,
			d = !1,
			e = 0;
		a.core.$outer.find(".lg-thumb").on("touchstart.lg", function(c) {
			a.thumbTotalWidth > a.thumbOuterWidth && (c.preventDefault(), b = c.originalEvent.targetTouches[0].pageX, a.thumbClickable = !
				1)
		}), a.core.$outer.find(".lg-thumb").on("touchmove.lg", function(f) {
			a.thumbTotalWidth > a.thumbOuterWidth && (f.preventDefault(), c = f.originalEvent.targetTouches[0].pageX, d = !0,
				a.$thumbOuter.addClass("lg-dragging"), e = a.left, e -= c - b, e > a.thumbTotalWidth - a.thumbOuterWidth && (e =
					a.thumbTotalWidth - a.thumbOuterWidth), e < 0 && (e = 0), a.setTranslate(e))
		}), a.core.$outer.find(".lg-thumb").on("touchend.lg", function() {
			a.thumbTotalWidth > a.thumbOuterWidth && d ? (d = !1, a.$thumbOuter.removeClass("lg-dragging"), Math.abs(c - b) <
				a.core.s.swipeThreshold && (a.thumbClickable = !0), a.left = e) : a.thumbClickable = !0
		})
	}, f.prototype.toogle = function() {
		var a = this;
		a.core.s.toogleThumb && (a.core.$outer.addClass("lg-can-toggle"), a.$thumbOuter.append(
			'<span class="lg-toogle-thumb lg-icon"></span>'), a.core.$outer.find(".lg-toogle-thumb").on("click.lg", function() {
			a.core.$outer.toggleClass("lg-thumb-open")
		}))
	}, f.prototype.thumbkeyPress = function() {
		var c = this;
		a(b).on("keydown.lg.thumb", function(a) {
			38 === a.keyCode ? (a.preventDefault(), c.core.$outer.addClass("lg-thumb-open")) : 40 === a.keyCode && (a.preventDefault(),
				c.core.$outer.removeClass("lg-thumb-open"))
		})
	}, f.prototype.destroy = function() {
		this.core.s.thumbnail && this.core.$items.length > 1 && (a(b).off(
			"resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb"), this.$thumbOuter.remove(), this.core.$outer.removeClass(
			"lg-has-thumb"))
	}, a.fn.lightGallery.modules.Thumbnail = f
}(jQuery, window, document),
function(a, b, c, d) {
	"use strict";
	var e = {
			videoMaxWidth: "855px",
			youtubePlayerParams: !1,
			vimeoPlayerParams: !1,
			dailymotionPlayerParams: !1,
			vkPlayerParams: !1,
			videojs: !1,
			videojsOptions: {}
		},
		f = function(b) {
			return this.core = a(b).data("lightGallery"), this.$el = a(b), this.core.s = a.extend({}, e, this.core.s), this.videoLoaded = !
				1, this.init(), this
		};
	f.prototype.init = function() {
		var b = this;
		b.core.$el.on("hasVideo.lg.tm", function(a, c, d, e) {
			if (b.core.$slide.eq(c).find(".lg-video").append(b.loadVideo(d, "lg-object", !0, c, e)), e)
				if (b.core.s.videojs) try {
					videojs(b.core.$slide.eq(c).find(".lg-html5").get(0), b.core.s.videojsOptions, function() {
						b.videoLoaded || this.play()
					})
				} catch (a) {
					console.error("Make sure you have included videojs")
				} else b.core.$slide.eq(c).find(".lg-html5").get(0).play()
		}), b.core.$el.on("onAferAppendSlide.lg.tm", function(a, c) {
			b.core.$slide.eq(c).find(".lg-video-cont").css("max-width", b.core.s.videoMaxWidth), b.videoLoaded = !0
		});
		var c = function(a) {
			if (a.find(".lg-object").hasClass("lg-has-poster") && a.find(".lg-object").is(":visible"))
				if (a.hasClass("lg-has-video")) {
					var c = a.find(".lg-youtube").get(0),
						d = a.find(".lg-vimeo").get(0),
						e = a.find(".lg-dailymotion").get(0),
						f = a.find(".lg-html5").get(0);
					if (c) c.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*");
					else if (d) try {
							$f(d).api("play")
						} catch (a) {
							console.error("Make sure you have included froogaloop2 js")
						} else if (e) e.contentWindow.postMessage("play", "*");
						else if (f)
						if (b.core.s.videojs) try {
							videojs(f).play()
						} catch (a) {
							console.error("Make sure you have included videojs")
						} else f.play();
					a.addClass("lg-video-playing");
				} else {
					a.addClass("lg-video-playing lg-has-video");
					var g, h, i = function(c, d) {
						if (a.find(".lg-video").append(b.loadVideo(c, "", !1, b.core.index, d)), d)
							if (b.core.s.videojs) try {
								videojs(b.core.$slide.eq(b.core.index).find(".lg-html5").get(0), b.core.s.videojsOptions, function() {
									this.play()
								})
							} catch (a) {
								console.error("Make sure you have included videojs")
							} else b.core.$slide.eq(b.core.index).find(".lg-html5").get(0).play()
					};
					b.core.s.dynamic ? (g = b.core.s.dynamicEl[b.core.index].src, h = b.core.s.dynamicEl[b.core.index].html, i(g, h)) :
						(g = b.core.$items.eq(b.core.index).attr("href") || b.core.$items.eq(b.core.index).attr("data-src"), h = b.core
							.$items.eq(b.core.index).attr("data-html"), i(g, h));
					var j = a.find(".lg-object");
					a.find(".lg-video").append(j), a.find(".lg-video-object").hasClass("lg-html5") || (a.removeClass("lg-complete"),
						a.find(".lg-video-object").on("load.lg error.lg", function() {
							a.addClass("lg-complete")
						}))
				}
		};
		b.core.doCss() && b.core.$items.length > 1 && (b.core.s.enableSwipe && b.core.isTouch || b.core.s.enableDrag && !b.core
			.isTouch) ? b.core.$el.on("onSlideClick.lg.tm", function() {
			var a = b.core.$slide.eq(b.core.index);
			c(a)
		}) : b.core.$slide.on("click.lg", function() {
			c(a(this))
		}), b.core.$el.on("onBeforeSlide.lg.tm", function(c, d, e) {
			var f = b.core.$slide.eq(d),
				g = f.find(".lg-youtube").get(0),
				h = f.find(".lg-vimeo").get(0),
				i = f.find(".lg-dailymotion").get(0),
				j = f.find(".lg-vk").get(0),
				k = f.find(".lg-html5").get(0);
			if (g) g.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*");
			else if (h) try {
					$f(h).api("pause")
				} catch (a) {
					console.error("Make sure you have included froogaloop2 js")
				} else if (i) i.contentWindow.postMessage("pause", "*");
				else if (k)
				if (b.core.s.videojs) try {
					videojs(k).pause()
				} catch (a) {
					console.error("Make sure you have included videojs")
				} else k.pause();
			j && a(j).attr("src", a(j).attr("src").replace("&autoplay", "&noplay"));
			var l;
			l = b.core.s.dynamic ? b.core.s.dynamicEl[e].src : b.core.$items.eq(e).attr("href") || b.core.$items.eq(e).attr(
				"data-src");
			var m = b.core.isVideo(l, e) || {};
			(m.youtube || m.vimeo || m.dailymotion || m.vk) && b.core.$outer.addClass("lg-hide-download")
		}), b.core.$el.on("onAfterSlide.lg.tm", function(a, c) {
			b.core.$slide.eq(c).removeClass("lg-video-playing")
		})
	}, f.prototype.loadVideo = function(b, c, d, e, f) {
		var g = "",
			h = 1,
			i = "",
			j = this.core.isVideo(b, e) || {};
		if (d && (h = this.videoLoaded ? 0 : 1), j.youtube) i = "?wmode=opaque&autoplay=" + h + "&enablejsapi=1", this.core.s
			.youtubePlayerParams && (i = i + "&" + a.param(this.core.s.youtubePlayerParams)), g =
			'<iframe class="lg-video-object lg-youtube ' + c + '" width="560" height="315" src="//www.youtube.com/embed/' + j.youtube[
				1] + i + '" frameborder="0" allowfullscreen></iframe>';
		else if (j.vimeo) i = "?autoplay=" + h + "&api=1", this.core.s.vimeoPlayerParams && (i = i + "&" + a.param(this.core
				.s.vimeoPlayerParams)), g = '<iframe class="lg-video-object lg-vimeo ' + c +
			'" width="560" height="315"  src="//player.vimeo.com/video/' + j.vimeo[1] + i +
			'" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
		else if (j.dailymotion) i = "?wmode=opaque&autoplay=" + h + "&api=postMessage", this.core.s.dailymotionPlayerParams &&
			(i = i + "&" + a.param(this.core.s.dailymotionPlayerParams)), g = '<iframe class="lg-video-object lg-dailymotion ' +
			c + '" width="560" height="315" src="//www.dailymotion.com/embed/video/' + j.dailymotion[1] + i +
			'" frameborder="0" allowfullscreen></iframe>';
		else if (j.html5) {
			var k = f.substring(0, 1);
			"." !== k && "#" !== k || (f = a(f).html()), g = f
		} else j.vk && (i = "&autoplay=" + h, this.core.s.vkPlayerParams && (i = i + "&" + a.param(this.core.s.vkPlayerParams)),
			g = '<iframe class="lg-video-object lg-vk ' + c + '" width="560" height="315" src="http://vk.com/video_ext.php?' +
			j.vk[1] + i + '" frameborder="0" allowfullscreen></iframe>');
		return g
	}, f.prototype.destroy = function() {
		this.videoLoaded = !1
	}, a.fn.lightGallery.modules.video = f
}(jQuery, window, document),
function(a, b, c, d) {
	"use strict";
	var e = {
			scale: 1,
			zoom: !0,
			actualSize: !0,
			enableZoomAfter: 300
		},
		f = function(c) {
			return this.core = a(c).data("lightGallery"), this.core.s = a.extend({}, e, this.core.s), this.core.s.zoom && this.core
				.doCss() && (this.init(), this.zoomabletimeout = !1, this.pageX = a(b).width() / 2, this.pageY = a(b).height() / 2 +
					a(b).scrollTop()), this
		};
	f.prototype.init = function() {
		var c = this,
			d = '<span id="lg-zoom-in" class="lg-icon"></span><span id="lg-zoom-out" class="lg-icon"></span>';
		c.core.s.actualSize && (d += '<span id="lg-actual-size" class="lg-icon"></span>'), this.core.$outer.find(
			".lg-toolbar").append(d), c.core.$el.on("onSlideItemLoad.lg.tm.zoom", function(b, d, e) {
			var f = c.core.s.enableZoomAfter + e;
			a("body").hasClass("lg-from-hash") && e ? f = 0 : a("body").removeClass("lg-from-hash"), c.zoomabletimeout =
				setTimeout(function() {
					c.core.$slide.eq(d).addClass("lg-zoomable")
				}, f + 30)
		});
		var e = 1,
			f = function(d) {
				var e, f, g = c.core.$outer.find(".lg-current .lg-image"),
					h = (a(b).width() - g.width()) / 2,
					i = (a(b).height() - g.height()) / 2 + a(b).scrollTop();
				e = c.pageX - h, f = c.pageY - i;
				var j = (d - 1) * e,
					k = (d - 1) * f;
				g.css("transform", "scale3d(" + d + ", " + d + ", 1)").attr("data-scale", d), g.parent().css({
					left: -j + "px",
					top: -k + "px"
				}).attr("data-x", j).attr("data-y", k)
			},
			g = function() {
				e > 1 ? c.core.$outer.addClass("lg-zoomed") : c.resetZoom(), e < 1 && (e = 1), f(e)
			},
			h = function(d, f, h, i) {
				var j, k = f.width();
				j = c.core.s.dynamic ? c.core.s.dynamicEl[h].width || f[0].naturalWidth || k : c.core.$items.eq(h).attr(
					"data-width") || f[0].naturalWidth || k;
				var l;
				c.core.$outer.hasClass("lg-zoomed") ? e = 1 : j > k && (l = j / k, e = l || 2), i ? (c.pageX = a(b).width() / 2, c
					.pageY = a(b).height() / 2 + a(b).scrollTop()) : (c.pageX = d.pageX || d.originalEvent.targetTouches[0].pageX, c
					.pageY = d.pageY || d.originalEvent.targetTouches[0].pageY), g(), setTimeout(function() {
					c.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")
				}, 10)
			},
			i = !1;
		c.core.$el.on("onAferAppendSlide.lg.tm.zoom", function(a, b) {
			var d = c.core.$slide.eq(b).find(".lg-image");
			d.on("dblclick", function(a) {
				h(a, d, b)
			}), d.on("touchstart", function(a) {
				i ? (clearTimeout(i), i = null, h(a, d, b)) : i = setTimeout(function() {
					i = null
				}, 300), a.preventDefault()
			})
		}), a(b).on("resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom", function() {
			c.pageX = a(b).width() / 2, c.pageY = a(b).height() / 2 + a(b).scrollTop(), f(e)
		}), a("#lg-zoom-out").on("click.lg", function() {
			c.core.$outer.find(".lg-current .lg-image").length && (e -= c.core.s.scale, g())
		}), a("#lg-zoom-in").on("click.lg", function() {
			c.core.$outer.find(".lg-current .lg-image").length && (e += c.core.s.scale, g())
		}), a("#lg-actual-size").on("click.lg", function(a) {
			h(a, c.core.$slide.eq(c.core.index).find(".lg-image"), c.core.index, !0)
		}), c.core.$el.on("onBeforeSlide.lg.tm", function() {
			e = 1, c.resetZoom()
		}), c.core.isTouch || c.zoomDrag(), c.core.isTouch && c.zoomSwipe()
	}, f.prototype.resetZoom = function() {
		this.core.$outer.removeClass("lg-zoomed"), this.core.$slide.find(".lg-img-wrap").removeAttr("style data-x data-y"),
			this.core.$slide.find(".lg-image").removeAttr("style data-scale"), this.pageX = a(b).width() / 2, this.pageY = a(b)
			.height() / 2 + a(b).scrollTop()
	}, f.prototype.zoomSwipe = function() {
		var a = this,
			b = {},
			c = {},
			d = !1,
			e = !1,
			f = !1;
		a.core.$slide.on("touchstart.lg", function(c) {
			if (a.core.$outer.hasClass("lg-zoomed")) {
				var d = a.core.$slide.eq(a.core.index).find(".lg-object");
				f = d.outerHeight() * d.attr("data-scale") > a.core.$outer.find(".lg").height(), e = d.outerWidth() * d.attr(
					"data-scale") > a.core.$outer.find(".lg").width(), (e || f) && (c.preventDefault(), b = {
					x: c.originalEvent.targetTouches[0].pageX,
					y: c.originalEvent.targetTouches[0].pageY
				})
			}
		}), a.core.$slide.on("touchmove.lg", function(g) {
			if (a.core.$outer.hasClass("lg-zoomed")) {
				var h, i, j = a.core.$slide.eq(a.core.index).find(".lg-img-wrap");
				g.preventDefault(), d = !0, c = {
					x: g.originalEvent.targetTouches[0].pageX,
					y: g.originalEvent.targetTouches[0].pageY
				}, a.core.$outer.addClass("lg-zoom-dragging"), i = f ? -Math.abs(j.attr("data-y")) + (c.y - b.y) : -Math.abs(j.attr(
					"data-y")), h = e ? -Math.abs(j.attr("data-x")) + (c.x - b.x) : -Math.abs(j.attr("data-x")), (Math.abs(c.x - b
					.x) > 15 || Math.abs(c.y - b.y) > 15) && j.css({
					left: h + "px",
					top: i + "px"
				})
			}
		}), a.core.$slide.on("touchend.lg", function() {
			a.core.$outer.hasClass("lg-zoomed") && d && (d = !1, a.core.$outer.removeClass("lg-zoom-dragging"), a.touchendZoom(
				b, c, e, f))
		})
	}, f.prototype.zoomDrag = function() {
		var c = this,
			d = {},
			e = {},
			f = !1,
			g = !1,
			h = !1,
			i = !1;
		c.core.$slide.on("mousedown.lg.zoom", function(b) {
			var e = c.core.$slide.eq(c.core.index).find(".lg-object");
			i = e.outerHeight() * e.attr("data-scale") > c.core.$outer.find(".lg").height(), h = e.outerWidth() * e.attr(
				"data-scale") > c.core.$outer.find(".lg").width(), c.core.$outer.hasClass("lg-zoomed") && a(b.target).hasClass(
				"lg-object") && (h || i) && (b.preventDefault(), d = {
				x: b.pageX,
				y: b.pageY
			}, f = !0, c.core.$outer.scrollLeft += 1, c.core.$outer.scrollLeft -= 1, c.core.$outer.removeClass("lg-grab").addClass(
				"lg-grabbing"))
		}), a(b).on("mousemove.lg.zoom", function(a) {
			if (f) {
				var b, j, k = c.core.$slide.eq(c.core.index).find(".lg-img-wrap");
				g = !0, e = {
					x: a.pageX,
					y: a.pageY
				}, c.core.$outer.addClass("lg-zoom-dragging"), j = i ? -Math.abs(k.attr("data-y")) + (e.y - d.y) : -Math.abs(k.attr(
					"data-y")), b = h ? -Math.abs(k.attr("data-x")) + (e.x - d.x) : -Math.abs(k.attr("data-x")), k.css({
					left: b + "px",
					top: j + "px"
				})
			}
		}), a(b).on("mouseup.lg.zoom", function(a) {
			f && (f = !1, c.core.$outer.removeClass("lg-zoom-dragging"), !g || d.x === e.x && d.y === e.y || (e = {
				x: a.pageX,
				y: a.pageY
			}, c.touchendZoom(d, e, h, i)), g = !1), c.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")
		})
	}, f.prototype.touchendZoom = function(a, b, c, d) {
		var e = this,
			f = e.core.$slide.eq(e.core.index).find(".lg-img-wrap"),
			g = e.core.$slide.eq(e.core.index).find(".lg-object"),
			h = -Math.abs(f.attr("data-x")) + (b.x - a.x),
			i = -Math.abs(f.attr("data-y")) + (b.y - a.y),
			j = (e.core.$outer.find(".lg").height() - g.outerHeight()) / 2,
			k = Math.abs(g.outerHeight() * Math.abs(g.attr("data-scale")) - e.core.$outer.find(".lg").height() + j),
			l = (e.core.$outer.find(".lg").width() - g.outerWidth()) / 2,
			m = Math.abs(g.outerWidth() * Math.abs(g.attr("data-scale")) - e.core.$outer.find(".lg").width() + l);
		(Math.abs(b.x - a.x) > 15 || Math.abs(b.y - a.y) > 15) && (d && (i <= -k ? i = -k : i >= -j && (i = -j)), c && (h <=
			-m ? h = -m : h >= -l && (h = -l)), d ? f.attr("data-y", Math.abs(i)) : i = -Math.abs(f.attr("data-y")), c ? f.attr(
			"data-x", Math.abs(h)) : h = -Math.abs(f.attr("data-x")), f.css({
			left: h + "px",
			top: i + "px"
		}))
	}, f.prototype.destroy = function() {
		var c = this;
		c.core.$el.off(".lg.zoom"), a(b).off(".lg.zoom"), c.core.$slide.off(".lg.zoom"), c.core.$el.off(".lg.tm.zoom"), c.resetZoom(),
			clearTimeout(c.zoomabletimeout), c.zoomabletimeout = !1
	}, a.fn.lightGallery.modules.zoom = f
}(jQuery, window, document),
function(a, b, c, d) {
	"use strict";
	var e = {
			hash: !0
		},
		f = function(c) {
			return this.core = a(c).data("lightGallery"), this.core.s = a.extend({}, e, this.core.s), this.core.s.hash && (this.oldHash =
				b.location.hash, this.init()), this
		};
	f.prototype.init = function() {
		var c, d = this;
		d.core.$el.on("onAfterSlide.lg.tm", function(a, c, e) {
			b.location.hash = "lg=" + d.core.s.galleryId + "&slide=" + e
		}), a(b).on("hashchange.lg.hash", function() {
			c = b.location.hash;
			var a = parseInt(c.split("&slide=")[1], 10);
			c.indexOf("lg=" + d.core.s.galleryId) > -1 ? d.core.slide(a, !1, !1) : d.core.lGalleryOn && d.core.destroy()
		})
	}, f.prototype.destroy = function() {
		this.core.s.hash && (this.oldHash && this.oldHash.indexOf("lg=" + this.core.s.galleryId) < 0 ? b.location.hash =
			this.oldHash : history.pushState ? history.pushState("", c.title, b.location.pathname + b.location.search) : b.location
			.hash = "", this.core.$el.off(".lg.hash"))
	}, a.fn.lightGallery.modules.hash = f
}(jQuery, window, document);
/*jquery.matchHeight-min.js*/
/*
 * jquery-match-height master by @liabru
 * http://brm.io/jquery-match-height/
 * License MIT
 */
! function(t) {
	"use strict";
	"function" == typeof define && define.amd ? define(["jquery"], t) : "undefined" != typeof module && module.exports ?
		module.exports = t(require("jquery")) : t(jQuery)
}(function(t) {
	var e = -1,
		o = -1,
		i = function(t) {
			return parseFloat(t) || 0
		},
		n = function(e) {
			var o = 1,
				n = t(e),
				a = null,
				r = [];
			return n.each(function() {
				var e = t(this),
					n = e.offset().top - i(e.css("margin-top")),
					s = r.length > 0 ? r[r.length - 1] : null;
				null === s ? r.push(e) : Math.floor(Math.abs(a - n)) <= o ? r[r.length - 1] = s.add(e) : r.push(e), a = n
			}), r
		},
		a = function(e) {
			var o = {
				byRow: !0,
				property: "height",
				target: null,
				remove: !1
			};
			return "object" == typeof e ? t.extend(o, e) : ("boolean" == typeof e ? o.byRow = e : "remove" === e && (o.remove = !
				0), o)
		},
		r = t.fn.matchHeight = function(e) {
			var o = a(e);
			if (o.remove) {
				var i = this;
				return this.css(o.property, ""), t.each(r._groups, function(t, e) {
					e.elements = e.elements.not(i)
				}), this
			}
			return this.length <= 1 && !o.target ? this : (r._groups.push({
				elements: this,
				options: o
			}), r._apply(this, o), this)
		};
	r.version = "master", r._groups = [], r._throttle = 80, r._maintainScroll = !1, r._beforeUpdate = null,
		r._afterUpdate = null, r._rows = n, r._parse = i, r._parseOptions = a, r._apply = function(e, o) {
			var s = a(o),
				h = t(e),
				c = [h],
				l = t(window).scrollTop(),
				p = t("html").outerHeight(!0),
				d = h.parents().filter(":hidden");
			return d.each(function() {
				var e = t(this);
				e.data("style-cache", e.attr("style"))
			}), d.css("display", "block"), s.byRow && !s.target && (h.each(function() {
				var e = t(this),
					o = e.css("display");
				"inline-block" !== o && "flex" !== o && "inline-flex" !== o && (o = "block"), e.data("style-cache", e.attr(
					"style")), e.css({
					display: o,
					"padding-top": "0",
					"padding-bottom": "0",
					"margin-top": "0",
					"margin-bottom": "0",
					"border-top-width": "0",
					"border-bottom-width": "0",
					height: "100px",
					overflow: "hidden"
				})
			}), c = n(h), h.each(function() {
				var e = t(this);
				e.attr("style", e.data("style-cache") || "")
			})), t.each(c, function(e, o) {
				var n = t(o),
					a = 0;
				if (s.target) a = s.target.outerHeight(!1);
				else {
					if (s.byRow && n.length <= 1) return void n.css(s.property, "");
					n.each(function() {
						var e = t(this),
							o = e.css("display");
						"inline-block" !== o && "flex" !== o && "inline-flex" !== o && (o = "block");
						var i = {
							display: o
						};
						i[s.property] = "",
							e.css(i), e.outerHeight(!1) > a && (a = e.outerHeight(!1)), e.css("display", "")
					})
				}
				n.each(function() {
					var e = t(this),
						o = 0;
					s.target && e.is(s.target) || ("border-box" !== e.css("box-sizing") && (o += i(e.css("border-top-width")) + i(
						e.css("border-bottom-width")), o += i(e.css("padding-top")) + i(e.css("padding-bottom"))), e.css(s.property,
						a - o + "px"))
				})
			}), d.each(function() {
				var e = t(this);
				e.attr("style", e.data("style-cache") || null)
			}), r._maintainScroll && t(window).scrollTop(l / p * t("html").outerHeight(!0)), this
		}, r._applyDataApi = function() {
			var e = {};
			t("[data-match-height], [data-mh]").each(function() {
				var o = t(this),
					i = o.attr("data-mh") || o.attr("data-match-height");
				i in e ? e[i] = e[i].add(o) : e[i] = o
			}), t.each(e, function() {
				this.matchHeight(!0)
			})
		};
	var s = function(e) {
		r._beforeUpdate && r._beforeUpdate(e, r._groups), t.each(r._groups, function() {
			r._apply(this.elements, this.options)
		}), r._afterUpdate && r._afterUpdate(e, r._groups)
	};
	r._update = function(i, n) {
		if (n && "resize" === n.type) {
			var a = t(window).width();
			if (a === e) return;
			e = a
		}
		i ? -1 === o && (o = setTimeout(function() {
			s(n), o = -1
		}, r._throttle)) : s(n)
	}, t(r._applyDataApi), t(window).bind("load", function(t) {
		r._update(!1, t)
	}), t(window).bind("resize orientationchange", function(t) {
		r._update(!0, t)
	})
});
$.components.register("matchHeight", {
	mode: "init",
	defaults: {},
	init: function(context) {
		if (typeof $.fn.matchHeight === "undefined") return;
		var defaults = $.components.getDefaults('matchHeight');

		$('[data-plugin="matchHeight"]', context).each(function() {
			var $this = $(this),
				options = $.extend(true, {}, defaults, $this.data()),
				matchSelector = $this.data('matchSelector');

			if (matchSelector) {
				$this.find(matchSelector).matchHeight(options);
			} else {
				$this.children().matchHeight(options);
			}

		});
	}
});
/*slick.min.js*/
! function(a) {
	"use strict";
	"function" == typeof define && define.amd ? define(["jquery"], a) : "undefined" != typeof exports ? module.exports = a(
		require("jquery")) : a(jQuery)
}(function(a) {
	"use strict";
	var lazyloadbg_set = $('input[name=lazyloadbg]').val(),
		lazyloadbg = lazyloadbg_set ? lazyloadbg_set : M['tem'] + '/min/img/loading.gif',
		lazyloadbg_base64 =
		"";
	if (!!window.ActiveXObject || "ActiveXObject" in window || ucBro) lazyloadbg = lazyloadbg_base64;
	var b = window.Slick || {};
	b = function() {
		function c(c, d) {
			var f, e = this;
			e.defaults = {
					accessibility: !0,
					adaptiveHeight: !1,
					appendArrows: a(c),
					appendDots: a(c),
					arrows: !0,
					asNavFor: null,
					prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
					nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
					autoplay: !1,
					autoplaySpeed: 3e3,
					centerMode: !1,
					centerPadding: "50px",
					cssEase: "ease",
					customPaging: function(b, c) {
						return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c + 1)
					},
					dots: !1,
					dotsClass: "slick-dots",
					draggable: !0,
					easing: "linear",
					edgeFriction: .35,
					fade: !1,
					focusOnSelect: !1,
					infinite: !0,
					initialSlide: 0,
					lazyLoad: "ondemand",
					placeHolder: lazyloadbg,
					mobileFirst: !1,
					pauseOnHover: !0,
					pauseOnFocus: !0,
					pauseOnDotsHover: !1,
					respondTo: "window",
					responsive: null,
					rows: 1,
					rtl: !1,
					slide: "",
					slidesPerRow: 1,
					slidesToShow: 1,
					slidesToScroll: 1,
					speed: 500,
					swipe: !0,
					swipeToSlide: !1,
					touchMove: !0,
					touchThreshold: 5,
					useCSS: !0,
					useTransform: !0,
					variableWidth: !1,
					vertical: !1,
					verticalSwiping: !1,
					waitForAnimate: !0,
					zIndex: 1e3
				}, e.initials = {
					animating: !1,
					dragging: !1,
					autoPlayTimer: null,
					currentDirection: 0,
					currentLeft: null,
					currentSlide: 0,
					direction: 1,
					$dots: null,
					listWidth: null,
					listHeight: null,
					loadIndex: 0,
					$nextArrow: null,
					$prevArrow: null,
					slideCount: null,
					slideWidth: null,
					$slideTrack: null,
					$slides: null,
					sliding: !1,
					slideOffset: 0,
					swipeLeft: null,
					$list: null,
					touchObject: {},
					transformsEnabled: !1,
					unslicked: !1
				}, a.extend(e, e.initials), e.activeBreakpoint = null, e.animType = null, e.animProp = null, e.breakpoints = [],
				e.breakpointSettings = [], e.cssTransitions = !1, e.focussed = !1, e.interrupted = !1, e.hidden = "hidden", e.paused = !
				0, e.positionProp = null, e.respondTo = null, e.rowCount = 1, e.shouldClick = !0, e.$slider = a(c), e.$slidesCache =
				null, e.transformType = null, e.transitionType = null, e.visibilityChange = "visibilitychange", e.windowWidth = 0,
				e.windowTimer = null, f = a(c).data("slick") || {}, e.options = a.extend({}, e.defaults, d, f), e.currentSlide =
				e.options.initialSlide, e.originalSettings = e.options, "undefined" != typeof document.mozHidden ? (e.hidden =
					"mozHidden", e.visibilityChange = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (e.hidden =
					"webkitHidden", e.visibilityChange = "webkitvisibilitychange"), e.autoPlay = a.proxy(e.autoPlay, e), e.autoPlayClear =
				a.proxy(e.autoPlayClear, e), e.autoPlayIterator = a.proxy(e.autoPlayIterator, e), e.changeSlide = a.proxy(e.changeSlide,
					e), e.clickHandler = a.proxy(e.clickHandler, e), e.selectHandler = a.proxy(e.selectHandler, e), e.setPosition =
				a.proxy(e.setPosition, e), e.swipeHandler = a.proxy(e.swipeHandler, e), e.dragHandler = a.proxy(e.dragHandler, e),
				e.keyHandler = a.proxy(e.keyHandler, e), e.instanceUid = b++, e.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, e.registerBreakpoints(),
				e.init(!0)
		}
		var b = 0;
		return c
	}(), b.prototype.activateADA = function() {
		var a = this;
		a.$slideTrack.find(".slick-active").attr({
			"aria-hidden": "false"
		}).find("a, input, button, select").attr({
			tabindex: "0"
		})
	}, b.prototype.addSlide = b.prototype.slickAdd = function(b, c, d) {
		var e = this;
		if ("boolean" == typeof c) d = c, c = null;
		else if (0 > c || c >= e.slideCount) return !1;
		e.unload(), "number" == typeof c ? 0 === c && 0 === e.$slides.length ? a(b).appendTo(e.$slideTrack) : d ? a(b).insertBefore(
				e.$slides.eq(c)) : a(b).insertAfter(e.$slides.eq(c)) : d === !0 ? a(b).prependTo(e.$slideTrack) : a(b).appendTo(e
				.$slideTrack), e.$slides = e.$slideTrack.children(this.options.slide), e.$slideTrack.children(this.options.slide)
			.detach(), e.$slideTrack.append(e.$slides), e.$slides.each(function(b, c) {
				a(c).attr("data-slick-index", b)
			}), e.$slidesCache = e.$slides, e.reinit()
	}, b.prototype.animateHeight = function() {
		var a = this;
		if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) {
			var b = a.$slides.eq(a.currentSlide).outerHeight(!0);
			a.$list.animate({
				height: b
			}, a.options.speed)
		}
	}, b.prototype.animateSlide = function(b, c) {
		var d = {},
			e = this;
		e.animateHeight(), e.options.rtl === !0 && e.options.vertical === !1 && (b = -b), e.transformsEnabled === !1 ? e.options
			.vertical === !1 ? e.$slideTrack.animate({
				left: b
			}, e.options.speed, e.options.easing, c) : e.$slideTrack.animate({
				top: b
			}, e.options.speed, e.options.easing, c) : e.cssTransitions === !1 ? (e.options.rtl === !0 && (e.currentLeft = -e.currentLeft),
				a({
					animStart: e.currentLeft
				}).animate({
					animStart: b
				}, {
					duration: e.options.speed,
					easing: e.options.easing,
					step: function(a) {
						a = Math.ceil(a), e.options.vertical === !1 ? (d[e.animType] = "translate(" + a + "px, 0px)", e.$slideTrack.css(
							d)) : (d[e.animType] = "translate(0px," + a + "px)", e.$slideTrack.css(d))
					},
					complete: function() {
						c && c.call()
					}
				})) : (e.applyTransition(), b = Math.ceil(b), e.options.vertical === !1 ? d[e.animType] = "translate3d(" + b +
				"px, 0px, 0px)" : d[e.animType] = "translate3d(0px," + b + "px, 0px)", e.$slideTrack.css(d), c && setTimeout(
					function() {
						e.disableTransition(), c.call()
					}, e.options.speed))
	}, b.prototype.getNavTarget = function() {
		var b = this,
			c = b.options.asNavFor;
		return c && null !== c && (c = a(c).not(b.$slider)), c
	}, b.prototype.asNavFor = function(b) {
		var c = this,
			d = c.getNavTarget();
		null !== d && "object" == typeof d && d.each(function() {
			var c = a(this).slick("getSlick");
			c.unslicked || c.slideHandler(b, !0)
		})
	}, b.prototype.applyTransition = function(a) {
		var b = this,
			c = {};
		b.options.fade === !1 ? c[b.transitionType] = b.transformType + " " + b.options.speed + "ms " + b.options.cssEase :
			c[b.transitionType] = "opacity " + b.options.speed + "ms " + b.options.cssEase, b.options.fade === !1 ? b.$slideTrack
			.css(c) : b.$slides.eq(a).css(c)
	}, b.prototype.autoPlay = function() {
		var a = this;
		a.autoPlayClear(), a.slideCount > a.options.slidesToShow && (a.autoPlayTimer = setInterval(a.autoPlayIterator, a.options
			.autoplaySpeed))
	}, b.prototype.autoPlayClear = function() {
		var a = this;
		a.autoPlayTimer && clearInterval(a.autoPlayTimer)
	}, b.prototype.autoPlayIterator = function() {
		var a = this,
			b = a.currentSlide + a.options.slidesToScroll;
		a.paused || a.interrupted || a.focussed || (a.options.infinite === !1 && (1 === a.direction && a.currentSlide + 1 ===
			a.slideCount - 1 ? a.direction = 0 : 0 === a.direction && (b = a.currentSlide - a.options.slidesToScroll, a.currentSlide -
				1 === 0 && (a.direction = 1))), a.slideHandler(b))
	}, b.prototype.buildArrows = function() {
		var b = this;
		b.options.arrows === !0 && (b.$prevArrow = a(b.options.prevArrow).addClass("slick-arrow"), b.$nextArrow = a(b.options
			.nextArrow).addClass("slick-arrow"), b.slideCount > b.options.slidesToShow ? (b.$prevArrow.removeClass(
				"slick-hidden").removeAttr("aria-hidden tabindex"), b.$nextArrow.removeClass("slick-hidden").removeAttr(
				"aria-hidden tabindex"), b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.prependTo(b.options.appendArrows),
			b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.appendTo(b.options.appendArrows), b.options.infinite !== !0 &&
			b.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : b.$prevArrow.add(b.$nextArrow).addClass(
			"slick-hidden").attr({
			"aria-disabled": "true",
			tabindex: "-1"
		}))
	}, b.prototype.buildDots = function() {
		var c, d, b = this;
		if (b.options.dots === !0 && b.slideCount > b.options.slidesToShow) {
			for (b.$slider.addClass("slick-dotted"), d = a("<ul />").addClass(b.options.dotsClass), c = 0; c <= b.getDotCount(); c +=
				1) d.append(a("<li />").append(b.options.customPaging.call(this, b, c)));
			b.$dots = d.appendTo(b.options.appendDots), b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden",
				"false")
		}
	}, b.prototype.buildOut = function() {
		var b = this;
		b.$slides = b.$slider.children(b.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), b.slideCount = b.$slides
			.length, b.$slides.each(function(b, c) {
				a(c).attr("data-slick-index", b).data("originalStyling", a(c).attr("style") || "")
			}), b.$slider.addClass("slick-slider"), b.$slideTrack = 0 === b.slideCount ? a('<div class="slick-track"/>').appendTo(
				b.$slider) : b.$slides.wrapAll('<div class="slick-track"/>').parent(), b.$list = b.$slideTrack.wrap(
				'<div aria-live="polite" class="slick-list"/>').parent(), b.$slideTrack.css("opacity", 0), (b.options.centerMode ===
				!0 || b.options.swipeToSlide === !0) && (b.options.slidesToScroll = 1), a("img[data-lazy]", b.$slider).not(
				"[src]").addClass("slick-loading"), b.setupInfinite(), b.buildArrows(), b.buildDots(), b.updateDots(), b.setSlideClasses(
				"number" == typeof b.currentSlide ? b.currentSlide : 0), b.options.draggable === !0 && b.$list.addClass(
				"draggable")
	}, b.prototype.buildRows = function() {
		var b, c, d, e, f, g, h, a = this;
		if (e = document.createDocumentFragment(), g = a.$slider.children(), a.options.rows > 1) {
			for (h = a.options.slidesPerRow * a.options.rows, f = Math.ceil(g.length / h), b = 0; f > b; b++) {
				var i = document.createElement("div");
				for (c = 0; c < a.options.rows; c++) {
					var j = document.createElement("div");
					for (d = 0; d < a.options.slidesPerRow; d++) {
						var k = b * h + (c * a.options.slidesPerRow + d);
						g.get(k) && j.appendChild(g.get(k))
					}
					i.appendChild(j)
				}
				e.appendChild(i)
			}
			a.$slider.empty().append(e), a.$slider.children().children().children().css({
				width: 100 / a.options.slidesPerRow + "%",
				display: "inline-block"
			})
		}
	}, b.prototype.checkResponsive = function(b, c) {
		var e, f, g, d = this,
			h = !1,
			i = d.$slider.width(),
			j = window.innerWidth || a(window).width();
		if ("window" === d.respondTo ? g = j : "slider" === d.respondTo ? g = i : "min" === d.respondTo && (g = Math.min(j,
				i)), d.options.responsive && d.options.responsive.length && null !== d.options.responsive) {
			f = null;
			for (e in d.breakpoints) d.breakpoints.hasOwnProperty(e) && (d.originalSettings.mobileFirst === !1 ? g < d.breakpoints[
				e] && (f = d.breakpoints[e]) : g > d.breakpoints[e] && (f = d.breakpoints[e]));
			null !== f ? null !== d.activeBreakpoint ? (f !== d.activeBreakpoint || c) && (d.activeBreakpoint = f, "unslick" ===
					d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]),
						b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b)), h = f) : (d.activeBreakpoint = f,
					"unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[
						f]), b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b)), h = f) : null !== d.activeBreakpoint &&
				(d.activeBreakpoint = null, d.options = d.originalSettings, b === !0 && (d.currentSlide = d.options.initialSlide),
					d.refresh(b), h = f), b || h === !1 || d.$slider.trigger("breakpoint", [d, h])
		}
	}, b.prototype.changeSlide = function(b, c) {
		var f, g, h, d = this,
			e = a(b.currentTarget);
		switch (e.is("a") && b.preventDefault(), e.is("li") || (e = e.closest("li")), h = d.slideCount % d.options.slidesToScroll !==
			0, f = h ? 0 : (d.slideCount - d.currentSlide) % d.options.slidesToScroll, b.data.message) {
			case "previous":
				g = 0 === f ? d.options.slidesToScroll : d.options.slidesToShow - f, d.slideCount > d.options.slidesToShow && d.slideHandler(
					d.currentSlide - g, !1, c);
				break;
			case "next":
				g = 0 === f ? d.options.slidesToScroll : f, d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide +
					g, !1, c);
				break;
			case "index":
				var i = 0 === b.data.index ? 0 : b.data.index || e.index() * d.options.slidesToScroll;
				d.slideHandler(d.checkNavigable(i), !1, c), e.children().trigger("focus");
				break;
			default:
				return
		}
	}, b.prototype.checkNavigable = function(a) {
		var c, d, b = this;
		if (c = b.getNavigableIndexes(), d = 0, a > c[c.length - 1]) a = c[c.length - 1];
		else
			for (var e in c) {
				if (a < c[e]) {
					a = d;
					break
				}
				d = c[e]
			}
		return a
	}, b.prototype.cleanUpEvents = function() {
		var b = this;
		b.options.dots && null !== b.$dots && a("li", b.$dots).off("click.slick", b.changeSlide).off("mouseenter.slick", a.proxy(
				b.interrupt, b, !0)).off("mouseleave.slick", a.proxy(b.interrupt, b, !1)), b.$slider.off("focus.slick blur.slick"),
			b.options.arrows === !0 && b.slideCount > b.options.slidesToShow && (b.$prevArrow && b.$prevArrow.off(
				"click.slick", b.changeSlide), b.$nextArrow && b.$nextArrow.off("click.slick", b.changeSlide)), b.$list.off(
				"touchstart.slick mousedown.slick", b.swipeHandler), b.$list.off("touchmove.slick mousemove.slick", b.swipeHandler),
			b.$list.off("touchend.slick mouseup.slick", b.swipeHandler), b.$list.off("touchcancel.slick mouseleave.slick", b.swipeHandler),
			b.$list.off("click.slick", b.clickHandler), a(document).off(b.visibilityChange, b.visibility), b.cleanUpSlideEvents(),
			b.options.accessibility === !0 && b.$list.off("keydown.slick", b.keyHandler), b.options.focusOnSelect === !0 && a(
				b.$slideTrack).children().off("click.slick", b.selectHandler), a(window).off("orientationchange.slick.slick-" + b
				.instanceUid, b.orientationChange), a(window).off("resize.slick.slick-" + b.instanceUid, b.resize), a(
				"[draggable!=true]", b.$slideTrack).off("dragstart", b.preventDefault), a(window).off("load.slick.slick-" + b.instanceUid,
				b.setPosition), a(document).off("ready.slick.slick-" + b.instanceUid, b.setPosition)
	}, b.prototype.cleanUpSlideEvents = function() {
		var b = this;
		b.$list.off("mouseenter.slick", a.proxy(b.interrupt, b, !0)), b.$list.off("mouseleave.slick", a.proxy(b.interrupt,
			b, !1))
	}, b.prototype.cleanUpRows = function() {
		var b, a = this;
		a.options.rows > 1 && (b = a.$slides.children().children(), b.removeAttr("style"), a.$slider.empty().append(b))
	}, b.prototype.clickHandler = function(a) {
		var b = this;
		b.shouldClick === !1 && (a.stopImmediatePropagation(), a.stopPropagation(), a.preventDefault())
	}, b.prototype.destroy = function(b) {
		var c = this;
		c.autoPlayClear(), c.touchObject = {}, c.cleanUpEvents(), a(".slick-cloned", c.$slider).detach(), c.$dots && c.$dots
			.remove(), c.$prevArrow && c.$prevArrow.length && (c.$prevArrow.removeClass(
					"slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""),
				c.htmlExpr.test(c.options.prevArrow) && c.$prevArrow.remove()), c.$nextArrow && c.$nextArrow.length && (c.$nextArrow
				.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css(
					"display", ""), c.htmlExpr.test(c.options.nextArrow) && c.$nextArrow.remove()), c.$slides && (c.$slides.removeClass(
				"slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr(
				"data-slick-index").each(function() {
				a(this).attr("style", a(this).data("originalStyling"))
			}), c.$slideTrack.children(this.options.slide).detach(), c.$slideTrack.detach(), c.$list.detach(), c.$slider.append(
				c.$slides)), c.cleanUpRows(), c.$slider.removeClass("slick-slider"), c.$slider.removeClass("slick-initialized"),
			c.$slider.removeClass("slick-dotted"), c.unslicked = !0, b || c.$slider.trigger("destroy", [c])
	}, b.prototype.disableTransition = function(a) {
		var b = this,
			c = {};
		c[b.transitionType] = "", b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c)
	}, b.prototype.fadeSlide = function(a, b) {
		var c = this;
		c.cssTransitions === !1 ? (c.$slides.eq(a).css({
			zIndex: c.options.zIndex
		}), c.$slides.eq(a).animate({
			opacity: 1
		}, c.options.speed, c.options.easing, b)) : (c.applyTransition(a), c.$slides.eq(a).css({
			opacity: 1,
			zIndex: c.options.zIndex
		}), b && setTimeout(function() {
			c.disableTransition(a), b.call()
		}, c.options.speed))
	}, b.prototype.fadeSlideOut = function(a) {
		var b = this;
		b.cssTransitions === !1 ? b.$slides.eq(a).animate({
			opacity: 0,
			zIndex: b.options.zIndex - 2
		}, b.options.speed, b.options.easing) : (b.applyTransition(a), b.$slides.eq(a).css({
			opacity: 0,
			zIndex: b.options.zIndex - 2
		}))
	}, b.prototype.filterSlides = b.prototype.slickFilter = function(a) {
		var b = this;
		null !== a && (b.$slidesCache = b.$slides, b.unload(), b.$slideTrack.children(this.options.slide).detach(), b.$slidesCache
			.filter(a).appendTo(b.$slideTrack), b.reinit())
	}, b.prototype.focusHandler = function() {
		var b = this;
		b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*:not(.slick-arrow)", function(c) {
			c.stopImmediatePropagation();
			var d = a(this);
			setTimeout(function() {
				b.options.pauseOnFocus && (b.focussed = d.is(":focus"), b.autoPlay())
			}, 0)
		})
	}, b.prototype.getCurrent = b.prototype.slickCurrentSlide = function() {
		var a = this;
		return a.currentSlide
	}, b.prototype.getDotCount = function() {
		var a = this,
			b = 0,
			c = 0,
			d = 0;
		if (a.options.infinite === !0)
			for (; b < a.slideCount;) ++d, b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ?
				a.options.slidesToScroll : a.options.slidesToShow;
		else if (a.options.centerMode === !0) d = a.slideCount;
		else if (a.options.asNavFor)
			for (; b < a.slideCount;) ++d, b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ?
				a.options.slidesToScroll : a.options.slidesToShow;
		else d = 1 + Math.ceil((a.slideCount - a.options.slidesToShow) / a.options.slidesToScroll);
		return d - 1
	}, b.prototype.getLeft = function(a) {
		var c, d, f, b = this,
			e = 0;
		return b.slideOffset = 0, d = b.$slides.first().outerHeight(!0), b.options.infinite === !0 ? (b.slideCount > b.options
				.slidesToShow && (b.slideOffset = b.slideWidth * b.options.slidesToShow * -1, e = d * b.options.slidesToShow * -1),
				b.slideCount % b.options.slidesToScroll !== 0 && a + b.options.slidesToScroll > b.slideCount && b.slideCount > b.options
				.slidesToShow && (a > b.slideCount ? (b.slideOffset = (b.options.slidesToShow - (a - b.slideCount)) * b.slideWidth *
					-1, e = (b.options.slidesToShow - (a - b.slideCount)) * d * -1) : (b.slideOffset = b.slideCount % b.options.slidesToScroll *
					b.slideWidth * -1, e = b.slideCount % b.options.slidesToScroll * d * -1))) : a + b.options.slidesToShow > b.slideCount &&
			(b.slideOffset = (a + b.options.slidesToShow - b.slideCount) * b.slideWidth, e = (a + b.options.slidesToShow - b.slideCount) *
				d), b.slideCount <= b.options.slidesToShow && (b.slideOffset = 0, e = 0), b.options.centerMode === !0 && b.options
			.infinite === !0 ? b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2) - b.slideWidth : b.options
			.centerMode === !0 && (b.slideOffset = 0, b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2)),
			c = b.options.vertical === !1 ? a * b.slideWidth * -1 + b.slideOffset : a * d * -1 + e, b.options.variableWidth ===
			!0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(
					".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow), c = b.options.rtl ===
				!0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0, b.options
				.centerMode === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(
						".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow + 1), c = b.options
					.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft :
					0, c += (b.$list.width() - f.outerWidth()) / 2)), c
	}, b.prototype.getOption = b.prototype.slickGetOption = function(a) {
		var b = this;
		return b.options[a]
	}, b.prototype.getNavigableIndexes = function() {
		var e, a = this,
			b = 0,
			c = 0,
			d = [];
		for (a.options.infinite === !1 ? e = a.slideCount : (b = -1 * a.options.slidesToScroll, c = -1 * a.options.slidesToScroll,
				e = 2 * a.slideCount); e > b;) d.push(b), b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options
			.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
		return d
	}, b.prototype.getSlick = function() {
		return this
	}, b.prototype.getSlideCount = function() {
		var c, d, e, b = this;
		return e = b.options.centerMode === !0 ? b.slideWidth * Math.floor(b.options.slidesToShow / 2) : 0, b.options.swipeToSlide ===
			!0 ? (b.$slideTrack.find(".slick-slide").each(function(c, f) {
				return f.offsetLeft - e + a(f).outerWidth() / 2 > -1 * b.swipeLeft ? (d = f, !1) : void 0
			}), c = Math.abs(a(d).attr("data-slick-index") - b.currentSlide) || 1) : b.options.slidesToScroll
	}, b.prototype.goTo = b.prototype.slickGoTo = function(a, b) {
		var c = this;
		c.changeSlide({
			data: {
				message: "index",
				index: parseInt(a)
			}
		}, b)
	}, b.prototype.init = function(b) {
		var c = this;
		a(c.$slider).hasClass("slick-initialized") || (a(c.$slider).addClass("slick-initialized"), c.buildRows(), c.buildOut(),
				c.setProps(), c.startLoad(), c.loadSlider(), c.initializeEvents(), c.updateArrows(), c.updateDots(), c.checkResponsive(
					!0), c.focusHandler()), b && c.$slider.trigger("init", [c]), c.options.accessibility === !0 && c.initADA(), c.options
			.autoplay && (c.paused = !1, c.autoPlay())
	}, b.prototype.initADA = function() {
		var b = this;
		b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({
			"aria-hidden": "true",
			tabindex: "-1"
		}).find("a, input, button, select").attr({
			tabindex: "-1"
		}), b.$slideTrack.attr("role", "listbox"), b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c) {
			a(this).attr({
				role: "option",
				"aria-describedby": "slick-slide" + b.instanceUid + c
			})
		}), null !== b.$dots && b.$dots.attr("role", "tablist").find("li").each(function(c) {
			a(this).attr({
				role: "presentation",
				"aria-selected": "false",
				"aria-controls": "navigation" + b.instanceUid + c,
				id: "slick-slide" + b.instanceUid + c
			})
		}).first().attr("aria-selected", "true").end().find("button").attr("role", "button").end().closest("div").attr(
			"role", "toolbar"), b.activateADA()
	}, b.prototype.initArrowEvents = function() {
		var a = this;
		a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.off("click.slick").on(
			"click.slick", {
				message: "previous"
			}, a.changeSlide), a.$nextArrow.off("click.slick").on("click.slick", {
			message: "next"
		}, a.changeSlide))
	}, b.prototype.initDotEvents = function() {
		var b = this;
		b.options.dots === !0 && b.slideCount > b.options.slidesToShow && a("li", b.$dots).on("click.slick", {
			message: "index"
		}, b.changeSlide), b.options.dots === !0 && b.options.pauseOnDotsHover === !0 && a("li", b.$dots).on(
			"mouseenter.slick", a.proxy(b.interrupt, b, !0)).on("mouseleave.slick", a.proxy(b.interrupt, b, !1))
	}, b.prototype.initSlideEvents = function() {
		var b = this;
		b.options.pauseOnHover && (b.$list.on("mouseenter.slick", a.proxy(b.interrupt, b, !0)), b.$list.on(
			"mouseleave.slick", a.proxy(b.interrupt, b, !1)))
	}, b.prototype.initializeEvents = function() {
		var b = this;
		b.initArrowEvents(), b.initDotEvents(), b.initSlideEvents(), b.$list.on("touchstart.slick mousedown.slick", {
				action: "start"
			}, b.swipeHandler), b.$list.on("touchmove.slick mousemove.slick", {
				action: "move"
			}, b.swipeHandler), b.$list.on("touchend.slick mouseup.slick", {
				action: "end"
			}, b.swipeHandler), b.$list.on("touchcancel.slick mouseleave.slick", {
				action: "end"
			}, b.swipeHandler), b.$list.on("click.slick", b.clickHandler), a(document).on(b.visibilityChange, a.proxy(b.visibility,
				b)), b.options.accessibility === !0 && b.$list.on("keydown.slick", b.keyHandler), b.options.focusOnSelect === !0 &&
			a(b.$slideTrack).children().on("click.slick", b.selectHandler), a(window).on("orientationchange.slick.slick-" + b.instanceUid,
				a.proxy(b.orientationChange, b)), a(window).on("resize.slick.slick-" + b.instanceUid, a.proxy(b.resize, b)), a(
				"[draggable!=true]", b.$slideTrack).on("dragstart", b.preventDefault), a(window).on("load.slick.slick-" + b.instanceUid,
				b.setPosition), a(document).on("ready.slick.slick-" + b.instanceUid, b.setPosition)
	}, b.prototype.initUI = function() {
		var a = this;
		a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.show(), a.$nextArrow.show()), a.options
			.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.show()
	}, b.prototype.keyHandler = function(a) {
		var b = this;
		a.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === a.keyCode && b.options.accessibility === !0 ? b.changeSlide({
			data: {
				message: b.options.rtl === !0 ? "next" : "previous"
			}
		}) : 39 === a.keyCode && b.options.accessibility === !0 && b.changeSlide({
			data: {
				message: b.options.rtl === !0 ? "previous" : "next"
			}
		}))
	}, b.prototype.lazyLoad = function() {
		function g(c) {
			a("img[data-lazy]", c).each(function() {
				var c = a(this),
					d = a(this).attr("data-lazy"),
					ds = a(this).attr("data-srcset"),
					e = document.createElement("img");
				c.animate({
					opacity: 0
				}, 100, function() {
					c.attr({
						src: d,
						srcset: ds
					}).removeAttr("data-lazy").removeAttr("data-srcset").removeClass("slick-loading").animate({
						opacity: 1
					}, 200), b.$slider.trigger("lazyLoaded", [b, c, d])
				});
				e.onerror = function() {
					c.removeAttr("data-lazy").removeAttr("data-srcset").removeClass("slick-loading").addClass(
						"slick-lazyload-error"), b.$slider.trigger("lazyLoadError", [b, c, d])
				}
			})
		}
		var c, d, e, f, b = this;
		b.options.centerMode === !0 ? b.options.infinite === !0 ? (e = b.currentSlide + (b.options.slidesToShow / 2 + 1), f =
			e + b.options.slidesToShow + 2) : (e = Math.max(0, b.currentSlide - (b.options.slidesToShow / 2 + 1)), f = 2 + (b
			.options.slidesToShow / 2 + 1) + b.currentSlide) : (e = b.options.infinite ? b.options.slidesToShow + b.currentSlide :
			b.currentSlide, f = Math.ceil(e + b.options.slidesToShow), b.options.fade === !0 && (e > 0 && e--, f <= b.slideCount &&
				f++)), c = b.$slider.find(".slick-slide").slice(e, f), g(c), b.slideCount <= b.options.slidesToShow ? (d = b.$slider
			.find(".slick-slide"), g(d)) : b.currentSlide >= b.slideCount - b.options.slidesToShow ? (d = b.$slider.find(
			".slick-cloned").slice(0, b.options.slidesToShow), g(d)) : 0 === b.currentSlide && (d = b.$slider.find(
			".slick-cloned").slice(-1 * b.options.slidesToShow), g(d))
	}, b.prototype.loadSlider = function() {
		var a = this;
		if (a.options.placeHolder)
			a.$slideTrack.find('img[data-lazy]').attr({
				src: a.options.placeHolder
			});
		a.setPosition(), a.$slideTrack.css({
			opacity: 1
		}), a.$slider.removeClass("slick-loading"), a.initUI(), "progressive" === a.options.lazyLoad && a.progressiveLazyLoad()
	}, b.prototype.next = b.prototype.slickNext = function() {
		var a = this;
		a.changeSlide({
			data: {
				message: "next"
			}
		})
	}, b.prototype.orientationChange = function() {
		var a = this;
		a.checkResponsive(), a.setPosition()
	}, b.prototype.pause = b.prototype.slickPause = function() {
		var a = this;
		a.autoPlayClear(), a.paused = !0
	}, b.prototype.play = b.prototype.slickPlay = function() {
		var a = this;
		a.autoPlay(), a.options.autoplay = !0, a.paused = !1, a.focussed = !1, a.interrupted = !1
	}, b.prototype.postSlide = function(a) {
		var b = this;
		b.unslicked || (b.$slider.trigger("afterChange", [b, a]), b.animating = !1, b.setPosition(), b.swipeLeft = null, b.options
			.autoplay && b.autoPlay(), b.options.accessibility === !0 && b.initADA())
	}, b.prototype.prev = b.prototype.slickPrev = function() {
		var a = this;
		a.changeSlide({
			data: {
				message: "previous"
			}
		})
	}, b.prototype.preventDefault = function(a) {
		a.preventDefault()
	}, b.prototype.progressiveLazyLoad = function(b) {
		b = b || 1;
		var e, f, fs, g, c = this,
			d = a("img[data-lazy]", c.$slider);
		d.length ? (e = d.first(), f = e.attr("data-lazy"), fs = e.attr("data-srcset"), g = document.createElement("img"),
			g.onload = function() {
				e.attr({
						src: f,
						srcset: fs
					}).removeAttr("data-lazy").removeAttr("data-srcset").removeClass("slick-loading"), c.options.adaptiveHeight ===
					!0 && c.setPosition(), c.$slider.trigger("lazyLoaded", [c, e, f]), c.progressiveLazyLoad()
			}, g.onerror = function() {
				3 > b ? setTimeout(function() {
					c.progressiveLazyLoad(b + 1)
				}, 500) : (e.removeAttr("data-lazy").removeAttr("data-srcset").removeClass("slick-loading").addClass(
					"slick-lazyload-error"), c.$slider.trigger("lazyLoadError", [c, e, f]), c.progressiveLazyLoad())
			}, g.src = f) : c.$slider.trigger("allImagesLoaded", [c])
	}, b.prototype.refresh = function(b) {
		var d, e, c = this;
		e = c.slideCount - c.options.slidesToShow, !c.options.infinite && c.currentSlide > e && (c.currentSlide = e), c.slideCount <=
			c.options.slidesToShow && (c.currentSlide = 0), d = c.currentSlide, c.destroy(!0), a.extend(c, c.initials, {
				currentSlide: d
			}), c.init(), b || c.changeSlide({
				data: {
					message: "index",
					index: d
				}
			}, !1)
	}, b.prototype.registerBreakpoints = function() {
		var c, d, e, b = this,
			f = b.options.responsive || null;
		if ("array" === a.type(f) && f.length) {
			b.respondTo = b.options.respondTo || "window";
			for (c in f)
				if (e = b.breakpoints.length - 1, d = f[c].breakpoint, f.hasOwnProperty(c)) {
					for (; e >= 0;) b.breakpoints[e] && b.breakpoints[e] === d && b.breakpoints.splice(e, 1), e--;
					b.breakpoints.push(d), b.breakpointSettings[d] = f[c].settings
				}
			b.breakpoints.sort(function(a, c) {
				return b.options.mobileFirst ? a - c : c - a
			})
		}
	}, b.prototype.reinit = function() {
		var b = this;
		b.$slides = b.$slideTrack.children(b.options.slide).addClass("slick-slide"), b.slideCount = b.$slides.length, b.currentSlide >=
			b.slideCount && 0 !== b.currentSlide && (b.currentSlide = b.currentSlide - b.options.slidesToScroll), b.slideCount <=
			b.options.slidesToShow && (b.currentSlide = 0), b.registerBreakpoints(), b.setProps(), b.setupInfinite(), b.buildArrows(),
			b.updateArrows(), b.initArrowEvents(), b.buildDots(), b.updateDots(), b.initDotEvents(), b.cleanUpSlideEvents(), b
			.initSlideEvents(), b.checkResponsive(!1, !0), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on(
				"click.slick", b.selectHandler), b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0), b.setPosition(),
			b.focusHandler(), b.paused = !b.options.autoplay, b.autoPlay(), b.$slider.trigger("reInit", [b])
	}, b.prototype.resize = function() {
		var b = this;
		a(window).width() !== b.windowWidth && (clearTimeout(b.windowDelay), b.windowDelay = window.setTimeout(function() {
			b.windowWidth = a(window).width(), b.checkResponsive(), b.unslicked || b.setPosition()
		}, 50))
	}, b.prototype.removeSlide = b.prototype.slickRemove = function(a, b, c) {
		var d = this;
		return "boolean" == typeof a ? (b = a, a = b === !0 ? 0 : d.slideCount - 1) : a = b === !0 ? --a : a, d.slideCount <
			1 || 0 > a || a > d.slideCount - 1 ? !1 : (d.unload(), c === !0 ? d.$slideTrack.children().remove() : d.$slideTrack
				.children(this.options.slide).eq(a).remove(), d.$slides = d.$slideTrack.children(this.options.slide), d.$slideTrack
				.children(this.options.slide).detach(), d.$slideTrack.append(d.$slides), d.$slidesCache = d.$slides, void d.reinit()
			)
	}, b.prototype.setCSS = function(a) {
		var d, e, b = this,
			c = {};
		b.options.rtl === !0 && (a = -a), d = "left" == b.positionProp ? Math.ceil(a) + "px" : "0px", e = "top" == b.positionProp ?
			Math.ceil(a) + "px" : "0px", c[b.positionProp] = a, b.transformsEnabled === !1 ? b.$slideTrack.css(c) : (c = {}, b
				.cssTransitions === !1 ? (c[b.animType] = "translate(" + d + ", " + e + ")", b.$slideTrack.css(c)) : (c[b.animType] =
					"translate3d(" + d + ", " + e + ", 0px)", b.$slideTrack.css(c)))
	}, b.prototype.setDimensions = function() {
		var a = this;
		a.options.vertical === !1 ? a.options.centerMode === !0 && a.$list.css({
				padding: "0px " + a.options.centerPadding
			}) : (a.$list.height(a.$slides.first().outerHeight(!0) * a.options.slidesToShow), a.options.centerMode === !0 && a
				.$list.css({
					padding: a.options.centerPadding + " 0px"
				})), a.listWidth = a.$list.width(), a.listHeight = a.$list.height(), a.options.vertical === !1 && a.options.variableWidth ===
			!1 ? (a.slideWidth = Math.ceil(a.listWidth / a.options.slidesToShow), a.$slideTrack.width(Math.ceil(a.slideWidth *
				a.$slideTrack.children(".slick-slide").length))) : a.options.variableWidth === !0 ? a.$slideTrack.width(5e3 * a.slideCount) :
			(a.slideWidth = Math.ceil(a.listWidth), a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0) * a.$slideTrack
				.children(".slick-slide").length)));
		var b = a.$slides.first().outerWidth(!0) - a.$slides.first().width();
		a.options.variableWidth === !1 && a.$slideTrack.children(".slick-slide").width(a.slideWidth - b)
	}, b.prototype.setFade = function() {
		var c, b = this;
		b.$slides.each(function(d, e) {
			c = b.slideWidth * d * -1, b.options.rtl === !0 ? a(e).css({
				position: "relative",
				right: c,
				top: 0,
				zIndex: b.options.zIndex - 2,
				opacity: 0
			}) : a(e).css({
				position: "relative",
				left: c,
				top: 0,
				zIndex: b.options.zIndex - 2,
				opacity: 0
			})
		}), b.$slides.eq(b.currentSlide).css({
			zIndex: b.options.zIndex - 1,
			opacity: 1
		})
	}, b.prototype.setHeight = function() {
		var a = this;
		if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) {
			var b = a.$slides.eq(a.currentSlide).outerHeight(!0);
			a.$list.css("height", b)
		}
	}, b.prototype.setOption = b.prototype.slickSetOption = function() {
		var c, d, e, f, h, b = this,
			g = !1;
		if ("object" === a.type(arguments[0]) ? (e = arguments[0], g = arguments[1], h = "multiple") : "string" === a.type(
				arguments[0]) && (e = arguments[0], f = arguments[1], g = arguments[2], "responsive" === arguments[0] && "array" ===
				a.type(arguments[1]) ? h = "responsive" : "undefined" != typeof arguments[1] && (h = "single")), "single" === h) b
			.options[e] = f;
		else if ("multiple" === h) a.each(e, function(a, c) {
			b.options[a] = c
		});
		else if ("responsive" === h)
			for (d in f)
				if ("array" !== a.type(b.options.responsive)) b.options.responsive = [f[d]];
				else {
					for (c = b.options.responsive.length - 1; c >= 0;) b.options.responsive[c].breakpoint === f[d].breakpoint && b.options
						.responsive.splice(c, 1), c--;
					b.options.responsive.push(f[d])
				}
		g && (b.unload(), b.reinit())
	}, b.prototype.setPosition = function() {
		var a = this;
		a.setDimensions(), a.setHeight(), a.options.fade === !1 ? a.setCSS(a.getLeft(a.currentSlide)) : a.setFade(), a.$slider
			.trigger("setPosition", [a])
	}, b.prototype.setProps = function() {
		var a = this,
			b = document.body.style;
		a.positionProp = a.options.vertical === !0 ? "top" : "left", "top" === a.positionProp ? a.$slider.addClass(
				"slick-vertical") : a.$slider.removeClass("slick-vertical"), (void 0 !== b.WebkitTransition || void 0 !== b.MozTransition ||
				void 0 !== b.msTransition) && a.options.useCSS === !0 && (a.cssTransitions = !0), a.options.fade && ("number" ==
				typeof a.options.zIndex ? a.options.zIndex < 3 && (a.options.zIndex = 3) : a.options.zIndex = a.defaults.zIndex),
			void 0 !== b.OTransform && (a.animType = "OTransform", a.transformType = "-o-transform", a.transitionType =
				"OTransition", void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)), void 0 !==
			b.MozTransform && (a.animType = "MozTransform", a.transformType = "-moz-transform", a.transitionType =
				"MozTransition", void 0 === b.perspectiveProperty && void 0 === b.MozPerspective && (a.animType = !1)), void 0 !==
			b.webkitTransform && (a.animType = "webkitTransform", a.transformType = "-webkit-transform", a.transitionType =
				"webkitTransition", void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)),
			void 0 !== b.msTransform && (a.animType = "msTransform", a.transformType = "-ms-transform", a.transitionType =
				"msTransition", void 0 === b.msTransform && (a.animType = !1)), void 0 !== b.transform && a.animType !== !1 && (a
				.animType = "transform", a.transformType = "transform", a.transitionType = "transition"), a.transformsEnabled = a
			.options.useTransform && null !== a.animType && a.animType !== !1
	}, b.prototype.setSlideClasses = function(a) {
		var c, d, e, f, b = this;
		d = b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden",
				"true"), b.$slides.eq(a).addClass("slick-current"), b.options.centerMode === !0 ? (c = Math.floor(b.options.slidesToShow /
				2), b.options.infinite === !0 && (a >= c && a <= b.slideCount - 1 - c ? b.$slides.slice(a - c, a + c + 1).addClass(
				"slick-active").attr("aria-hidden", "false") : (e = b.options.slidesToShow + a, d.slice(e - c + 1, e + c + 2).addClass(
				"slick-active").attr("aria-hidden", "false")), 0 === a ? d.eq(d.length - 1 - b.options.slidesToShow).addClass(
				"slick-center") : a === b.slideCount - 1 && d.eq(b.options.slidesToShow).addClass("slick-center")), b.$slides.eq(
				a).addClass("slick-center")) : a >= 0 && a <= b.slideCount - b.options.slidesToShow ? b.$slides.slice(a, a + b.options
				.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : d.length <= b.options.slidesToShow ? d.addClass(
				"slick-active").attr("aria-hidden", "false") : (f = b.slideCount % b.options.slidesToShow, e = b.options.infinite ===
				!0 ? b.options.slidesToShow + a : a, b.options.slidesToShow == b.options.slidesToScroll && b.slideCount - a < b.options
				.slidesToShow ? d.slice(e - (b.options.slidesToShow - f), e + f).addClass("slick-active").attr("aria-hidden",
					"false") : d.slice(e, e + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")),
			"ondemand" === b.options.lazyLoad && b.lazyLoad()
	}, b.prototype.setupInfinite = function() {
		var c, d, e, b = this;
		if (b.options.fade === !0 && (b.options.centerMode = !1), b.options.infinite === !0 && b.options.fade === !1 && (d =
				null, b.slideCount > b.options.slidesToShow)) {
			for (e = b.options.centerMode === !0 ? b.options.slidesToShow + 1 : b.options.slidesToShow, c = b.slideCount; c >
				b.slideCount - e; c -= 1) d = c - 1, a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d - b.slideCount)
				.prependTo(b.$slideTrack).addClass("slick-cloned");
			for (c = 0; e > c; c += 1) d = c, a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d + b.slideCount)
				.appendTo(b.$slideTrack).addClass("slick-cloned");
			b.$slideTrack.find(".slick-cloned").find("[id]").each(function() {
				a(this).attr("id", "")
			})
		}
	}, b.prototype.interrupt = function(a) {
		var b = this;
		a || b.autoPlay(), b.interrupted = a
	}, b.prototype.selectHandler = function(b) {
		var c = this,
			d = a(b.target).is(".slick-slide") ? a(b.target) : a(b.target).parents(".slick-slide"),
			e = parseInt(d.attr("data-slick-index"));
		return e || (e = 0), c.slideCount <= c.options.slidesToShow ? (c.setSlideClasses(e), void c.asNavFor(e)) : void c.slideHandler(
			e)
	}, b.prototype.slideHandler = function(a, b, c) {
		var d, e, f, g, j, h = null,
			i = this;
		return b = b || !1, i.animating === !0 && i.options.waitForAnimate === !0 || i.options.fade === !0 && i.currentSlide ===
			a || i.slideCount <= i.options.slidesToShow ? void 0 : (b === !1 && i.asNavFor(a), d = a, h = i.getLeft(d), g = i.getLeft(
					i.currentSlide), i.currentLeft = null === i.swipeLeft ? g : i.swipeLeft, i.options.infinite === !1 && i.options.centerMode ===
				!1 && (0 > a || a > i.getDotCount() * i.options.slidesToScroll) ? void(i.options.fade === !1 && (d = i.currentSlide,
					c !== !0 ? i.animateSlide(g, function() {
						i.postSlide(d)
					}) : i.postSlide(d))) : i.options.infinite === !1 && i.options.centerMode === !0 && (0 > a || a > i.slideCount -
					i.options.slidesToScroll) ? void(i.options.fade === !1 && (d = i.currentSlide, c !== !0 ? i.animateSlide(g,
					function() {
						i.postSlide(d)
					}) : i.postSlide(d))) : (i.options.autoplay && clearInterval(i.autoPlayTimer), e = 0 > d ? i.slideCount % i.options
					.slidesToScroll !== 0 ? i.slideCount - i.slideCount % i.options.slidesToScroll : i.slideCount + d : d >= i.slideCount ?
					i.slideCount % i.options.slidesToScroll !== 0 ? 0 : d - i.slideCount : d, i.animating = !0, i.$slider.trigger(
						"beforeChange", [i, i.currentSlide, e]), f = i.currentSlide, i.currentSlide = e, i.setSlideClasses(i.currentSlide),
					i.options.asNavFor && (j = i.getNavTarget(), j = j.slick("getSlick"), j.slideCount <= j.options.slidesToShow &&
						j.setSlideClasses(i.currentSlide)), i.updateDots(), i.updateArrows(), i.options.fade === !0 ? (c !== !0 ? (i.fadeSlideOut(
						f), i.fadeSlide(e, function() {
						i.postSlide(e)
					})) : i.postSlide(e), void i.animateHeight()) : void(c !== !0 ? i.animateSlide(h, function() {
						i.postSlide(e)
					}) : i.postSlide(e))))
	}, b.prototype.startLoad = function() {
		var a = this;
		a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.hide(), a.$nextArrow.hide()), a.options
			.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.hide(), a.$slider.addClass("slick-loading")
	}, b.prototype.swipeDirection = function() {
		var a, b, c, d, e = this;
		return a = e.touchObject.startX - e.touchObject.curX, b = e.touchObject.startY - e.touchObject.curY, c = Math.atan2(
				b, a), d = Math.round(180 * c / Math.PI), 0 > d && (d = 360 - Math.abs(d)), 45 >= d && d >= 0 ? e.options.rtl ===
			!1 ? "left" : "right" : 360 >= d && d >= 315 ? e.options.rtl === !1 ? "left" : "right" : d >= 135 && 225 >= d ? e.options
			.rtl === !1 ? "right" : "left" : e.options.verticalSwiping === !0 ? d >= 35 && 135 >= d ? "down" : "up" :
			"vertical"
	}, b.prototype.swipeEnd = function(a) {
		var c, d, b = this;
		if (b.dragging = !1, b.interrupted = !1, b.shouldClick = b.touchObject.swipeLength > 10 ? !1 : !0, void 0 === b.touchObject
			.curX) return !1;
		if (b.touchObject.edgeHit === !0 && b.$slider.trigger("edge", [b, b.swipeDirection()]), b.touchObject.swipeLength >=
			b.touchObject.minSwipe) {
			switch (d = b.swipeDirection()) {
				case "left":
				case "down":
					c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide + b.getSlideCount()) : b.currentSlide + b.getSlideCount(),
						b.currentDirection = 0;
					break;
				case "right":
				case "up":
					c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide - b.getSlideCount()) : b.currentSlide - b.getSlideCount(),
						b.currentDirection = 1
			}
			"vertical" != d && (b.slideHandler(c), b.touchObject = {}, b.$slider.trigger("swipe", [b, d]))
		} else b.touchObject.startX !== b.touchObject.curX && (b.slideHandler(b.currentSlide), b.touchObject = {})
	}, b.prototype.swipeHandler = function(a) {
		var b = this;
		if (!(b.options.swipe === !1 || "ontouchend" in document && b.options.swipe === !1 || b.options.draggable === !1 &&
				-1 !== a.type.indexOf("mouse"))) switch (b.touchObject.fingerCount = a.originalEvent && void 0 !== a.originalEvent
			.touches ? a.originalEvent.touches.length : 1, b.touchObject.minSwipe = b.listWidth / b.options.touchThreshold, b
			.options.verticalSwiping === !0 && (b.touchObject.minSwipe = b.listHeight / b.options.touchThreshold), a.data.action
		) {
			case "start":
				b.swipeStart(a);
				break;
			case "move":
				b.swipeMove(a);
				break;
			case "end":
				b.swipeEnd(a)
		}
	}, b.prototype.swipeMove = function(a) {
		var d, e, f, g, h, b = this;
		return h = void 0 !== a.originalEvent ? a.originalEvent.touches : null, !b.dragging || h && 1 !== h.length ? !1 : (
			d = b.getLeft(b.currentSlide), b.touchObject.curX = void 0 !== h ? h[0].pageX : a.clientX, b.touchObject.curY =
			void 0 !== h ? h[0].pageY : a.clientY, b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curX -
				b.touchObject.startX, 2))), b.options.verticalSwiping === !0 && (b.touchObject.swipeLength = Math.round(Math.sqrt(
				Math.pow(b.touchObject.curY - b.touchObject.startY, 2)))), e = b.swipeDirection(), "vertical" !== e ? (void 0 !==
				a.originalEvent && b.touchObject.swipeLength > 4 && a.preventDefault(), g = (b.options.rtl === !1 ? 1 : -1) * (b
					.touchObject.curX > b.touchObject.startX ? 1 : -1), b.options.verticalSwiping === !0 && (g = b.touchObject.curY >
					b.touchObject.startY ? 1 : -1), f = b.touchObject.swipeLength, b.touchObject.edgeHit = !1, b.options.infinite ===
				!1 && (0 === b.currentSlide && "right" === e || b.currentSlide >= b.getDotCount() && "left" === e) && (f = b.touchObject
					.swipeLength * b.options.edgeFriction, b.touchObject.edgeHit = !0), b.options.vertical === !1 ? b.swipeLeft = d +
				f * g : b.swipeLeft = d + f * (b.$list.height() / b.listWidth) * g, b.options.verticalSwiping === !0 && (b.swipeLeft =
					d + f * g), b.options.fade === !0 || b.options.touchMove === !1 ? !1 : b.animating === !0 ? (b.swipeLeft = null,
					!1) : void b.setCSS(b.swipeLeft)) : void 0)
	}, b.prototype.swipeStart = function(a) {
		var c, b = this;
		return b.interrupted = !0, 1 !== b.touchObject.fingerCount || b.slideCount <= b.options.slidesToShow ? (b.touchObject = {},
			!1) : (void 0 !== a.originalEvent && void 0 !== a.originalEvent.touches && (c = a.originalEvent.touches[0]), b.touchObject
			.startX = b.touchObject.curX = void 0 !== c ? c.pageX : a.clientX, b.touchObject.startY = b.touchObject.curY =
			void 0 !== c ? c.pageY : a.clientY, void(b.dragging = !0))
	}, b.prototype.unfilterSlides = b.prototype.slickUnfilter = function() {
		var a = this;
		null !== a.$slidesCache && (a.unload(), a.$slideTrack.children(this.options.slide).detach(), a.$slidesCache.appendTo(
			a.$slideTrack), a.reinit())
	}, b.prototype.unload = function() {
		var b = this;
		a(".slick-cloned", b.$slider).remove(), b.$dots && b.$dots.remove(), b.$prevArrow && b.htmlExpr.test(b.options.prevArrow) &&
			b.$prevArrow.remove(), b.$nextArrow && b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.remove(), b.$slides.removeClass(
				"slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "")
	}, b.prototype.unslick = function(a) {
		var b = this;
		b.$slider.trigger("unslick", [b, a]), b.destroy()
	}, b.prototype.updateArrows = function() {
		var b, a = this;
		b = Math.floor(a.options.slidesToShow / 2), a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && !a.options
			.infinite && (a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), a.$nextArrow.removeClass(
					"slick-disabled").attr("aria-disabled", "false"), 0 === a.currentSlide ? (a.$prevArrow.addClass("slick-disabled")
					.attr("aria-disabled", "true"), a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >=
				a.slideCount - a.options.slidesToShow && a.options.centerMode === !1 ? (a.$nextArrow.addClass("slick-disabled").attr(
					"aria-disabled", "true"), a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >=
				a.slideCount - 1 && a.options.centerMode === !0 && (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled",
					"true"), a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")))
	}, b.prototype.updateDots = function() {
		var a = this;
		null !== a.$dots && (a.$dots.find("li").removeClass("slick-active").attr("aria-hidden", "true"), a.$dots.find("li")
			.eq(Math.floor(a.currentSlide / a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden", "false"))
	}, b.prototype.visibility = function() {
		var a = this;
		a.options.autoplay && (document[a.hidden] ? a.interrupted = !0 : a.interrupted = !1)
	}, a.fn.slick = function() {
		var f, g, a = this,
			c = arguments[0],
			d = Array.prototype.slice.call(arguments, 1),
			e = a.length;
		for (f = 0; e > f; f++)
			if ("object" == typeof c || "undefined" == typeof c ? a[f].slick = new b(a[f], c) : g = a[f].slick[c].apply(a[f].slick,
					d), "undefined" != typeof g) return g;
		return a
	}
});
/*form.js*/
$(document).ready(function() {
	if ($(".met-form-validation").length) {
		$(".met-form-validation").formValidation({
			framework: "bootstrap"
		})
	}
	$(document).on('keyup', ".met-form input[name='code']", function() {
		$(this).val($(this).val().toUpperCase());
	});
	/*上传组件*/
	$(document).on("change", ".input-group-file [type=file]", function() {
		var $this = $(this),
			$text = $(this).parents('.input-group-file').find('.form-control'),
			value = "";
		$.each($this[0].files, function(i, file) {
			value += file.name + ", ";
		});
		value = value.substring(0, value.length - 1);
		$text.val(value);
	});
})

function codeimgRefresh() {
	var url = $(".met-form-codeimg").data("url");
	$(".met-form-codeimg").attr("src", url + '&random=' + Math.floor(Math.random() * 9999 + 1));
}
/*job.js*/
$(document).ready(function() {
	if ($("#met-job-cv").length) {
		/*招聘模块弹出表单*/
		$(document).on('click', ".met-job-cvbtn", function() {
			var cvurl = $(this).data('cvurl'),
				jobid = $(this).data('jobid');
			if ($("#met-job-cv .modal-body .form-group").length) {
				$("#met-job-cv .met-form").data('formValidation').resetForm();
				$("#met-job-cv .modal-body input[name='jobid']").val(jobid);
			} else {
				$("#met-job-cv .modal-body").html(
					'<div class="height-100 vertical-align text-center cart-loader"><div class="loader vertical-align-middle loader-default"></div></div>'
				);
				$.ajax({
					url: cvurl + '&jobid=' + jobid,
					type: 'POST',
					success: function(data) {
						$("#met-job-cv .modal-body").html(data).hide().slideDown(500);
						$.components.init('placeholder');
						$("#met-job-cv .met-form").formValidation({
							framework: "bootstrap"
						})
						if (!$("#met-job-cv .modal-body input[name='jobid']").val()) $(
							"#met-job-cv .modal-body input[name='jobid']").val(jobid);
					}
				});
			}
			$("#met-job-cv").modal('show');
		});
	}
})
/*img.js*/
$(document).ready(function() {
	if ($('.met-img').length) {
		//图片高度预设
		imageSize('.met-img .met-page-ajax');
		//图片懒加载
		$(".met-img [data-original]").lazyload();
	}
	if ($(".met-img-showbtn").length) {
		$(document).on('click', ".met-img-showbtn", function() {
			var imglist = $(this).data("imglist"),
				dyarr = new Array(),
				arlt = imglist.split('|');
			$.each(arlt, function(name, value) {
				if (value != '') {
					var st = value.split('*'),
						key = name;
					dyarr[key] = new Array();
					dyarr[key]['src'] = st[1];
					dyarr[key]['thumb'] = st[1];
					dyarr[key]['subHtml'] = st[0];
				}
			})
			//点击进入画廊
			$(this).galleryLoad(dyarr);
		});
	}
})

/*product.js*/
$(document).ready(function() {
	/*产品列表页*/
	if ($('.met-product').length) {
		/*图片高度预设*/
		imageSize('.met-product .met-page-ajax');
		//图片懒加载
		if ($(".met-product [data-original]").length) {
			var animonscroll_pro_open = 1;
			$(".met-product [data-original]").lazyload({
				load: function() {
					//产品列表页瀑布流
					if (animonscroll_pro_open && $('#met-grid').length) {
						MetAnimOnScroll();
						animonscroll_pro_open = 0;
					}
				}
			});
		}
	}

	/*产品详情页产品轮播图*/
	var showpro_list = '.met-showproduct-list',
		showpro_list_slide = showpro_list + ' .slick-slide';
	if ($(showpro_list_slide).length > 1) {
		var slickdots = showpro_list + ' ul.slick-dots',
			slickdots_div = showpro_list + ' ul.slick-dots div',
			slickdots_li = showpro_list + ' ul.slick-dots li',
			showpro_index = 0;
		//生成缩略图
		$(showpro_list).on('init', function(event, slick) {
			var showpro_list_slide_true = showpro_list_slide + ':not(.slick-cloned)';
			for (var i = 0; i < $(showpro_list_slide_true).length; i++) {
				var thumbsrc = $(showpro_list_slide_true + ':eq(' + i + ')').data('exthumbimage'),
					thumbalt = $(showpro_list_slide_true + ':eq(' + i + ') img').attr('alt'),
					showpro_thumb = '<img src="' + thumbsrc + '" alt="' + thumbalt + '" />';
				$(slickdots_li).eq(i).html(showpro_thumb);
			}
			$(slickdots).wrapInner('<div></div>');
			$(slickdots_div).width($(slickdots_li).length * 74 - 10);
		})
		//开始轮播
		$(showpro_list).slick({
			dots: true,
			speed: 500,
			prevArrow: '<button type="button" class="slick-prev"><i class="icon pe-angle-left vertical-align-middle"></button>',
			nextArrow: '<button type="button" class="slick-next"><i class="icon pe-angle-right vertical-align-middle"></i></button>',
		})
		$(showpro_list).on('beforeChange', function(event, slick, currentSlide, nextSlide) {
			paginationScroll(nextSlide);
			showpro_index = nextSlide;
		});
		$(showpro_list).on('setPosition', function(event, slick) {
			$(showpro_list_slide + '.slick-active+.slick-slide img').each(function() {
				if ($(this).attr('data-lazy')) $(this).attr({
					src: $(this).data('lazy')
				}).removeAttr('data-lazy').removeClass('slick-loading');
			})
		});
		if ($('#showpro-gallery').length && deviceType == 'p') {
			$(showpro_list).slick('slickSetOption', 'swipe', false);
		}
		$(window).resize(function() {
			paginationScroll(showpro_index);
		});
		//缩略图滚动
		function paginationScroll(index) {
			var slickdots_w = $(slickdots).width(),
				slickdots_div_w = $(slickdots_div).width(),
				deviation = parseInt(index * 74 - slickdots_w / 2 + 32);
			if (slickdots_div_w > slickdots_w) {
				var translateX = deviation > 0 ? -deviation : 0;
				if (deviation + slickdots_w >= slickdots_div_w) translateX = -parseInt(slickdots_div_w - slickdots_w);
				if ($('html').hasClass('no-csstransitions')) {
					$(slickdots_div).stop().animate({
						left: translateX
					}, 500); // IE9兼容
				} else {
					$(slickdots_div).css({
						transform: 'translateX(' + translateX + 'px)'
					});
				}
			}
		}
	}

	/*产品详情页标准模式*/
	if ($('.met-showproduct.pagetype1').length) {
		//产品画廊加载
		$('#showpro-gallery').galleryLoad();
		//选项卡点击切换触发图片延迟加载
		$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
			var href = $(this).attr('href');
			$(href).find('img:eq(0)').trigger('scroll');
		})
		/*选项卡滚动条（移动端）*/
		navtabSwiper(".met-showproduct-navtabs");
		/*推荐产品*/
		var prohot = '.product-hot .mob-masonry';
		if ($(prohot).length) {
			/*图片高度预设*/
			imageSize(prohot);
			//推荐产品图片懒加载
			var animonscroll_prohot_open = 1;
			$(prohot + ' img').lazyload({
				load: function() {
					Breakpoints.on('xs sm', {
						enter: function() {
							if (animonscroll_prohot_open) {
								$(prohot).masonry({
									itemSelector: "li"
								});
								animonscroll_prohot_open = 0;
							}
						}
					});
				}
			});
		}
	}

	/*产品详情页时尚模式*/
	var showprotype2 = '.met-showproduct.pagetype2';
	if ($(showprotype2).length) {
		window.navbar = $(showprotype2 + ' .navbar');
		var navbar_t = navbar.offset().top;
		$(window).scroll(function() {
			var st = $(this).scrollTop();
			//标题工具栏固定
			if (st > navbar_t) {
				navbar.addClass('navbar-fixed-top animation-slide-top');
			} else {
				navbar.removeClass('navbar-fixed-top animation-slide-top');
			}
			//选项卡自动选中
			navbar.find('.navbar-right li a').each(function() {
				var topsize = pro_topsize($(this));
				//30为区域上下内边距，根据需要调整
				if (st >= (topsize - 30)) pro_active($(this));
			});
		});
		//选项卡点击事件
		$(document).on('click', showprotype2 + ' .navbar .navbar-right li a', function(e) {
			e.preventDefault();
			var thisobj = $(this);
			$('html,body').animate({
				'scrollTop': pro_topsize($(this))
			}, 300, function() {
				pro_active(thisobj);
			}); //页面滑动到指定位置
		})
		/*选项卡滚动条（移动端）*/
		$(showprotype2 + ' .navbar .navbar-toggle').one("click", function() {
			setTimeout(function() {
				navtabSwiper(".met-showproduct-navtabs");
			}, 0)
		});
	}
})
/*选中选项卡*/
function pro_active(dom) {
	navbar.find('.navbar-right li').removeClass('active');
	dom.parent('li').addClass('active');
}
/*获取选项卡内容距离顶部的位置*/
function pro_topsize(dom) {
	var oftop = $(dom.attr("href")).offset().top,
		topsize = oftop - 100;
	if (navbar.hasClass('navbar-fixed-top')) {
		topsize = topsize + 50;
	} else {
		if (Breakpoints.is('xs')) {
			topsize = topsize - navbar.find(".navbar-collapse-toolbar").height();
		}
	}
	if (topsize < 0) topsize = 10;
	return topsize;
}
/*瀑布流配置*/
function MetAnimOnScroll(okno) {
	new AnimOnScroll(document.getElementById('met-grid'), {
		minDuration: 0.4,
		maxDuration: 0.7,
		viewportFactor: 0.2
	});
}
/*news.js*/
$(document).ready(function() {
	/*文章列表页*/
	/*图片高度预设*/
	imageSize('.met-news .met-news-list [data-scale]');
	var news_original = '.met-news .met-page-ajax [data-original]';
	if ($(news_original).length) {
		//图片预加载
		$(news_original).lazyload();
	}
	/*模式3*/
	if ($('.news-headlines .slick-slide').length > 1) {
		$('.news-headlines').slick({
			autoplay: true,
			dots: true,
			autoplaySpeed: 4000,
			speed: 500,
			swipe: false,
			prevArrow: '<button type="button" class="slick-prev"><i class="icon pe-angle-left vertical-align-middle"></button>',
			nextArrow: '<button type="button" class="slick-next"><i class="icon pe-angle-right vertical-align-middle"></i></button>',
			responsive: [{
				breakpoint: 1200,
				settings: {
					swipe: true
				}
			}]
		});
		$('.news-headlines').on('setPosition', function(event, slick) {
			$('.news-headlines .slick-active+.slick-slide img').each(function() {
				if ($(this).attr('data-lazy')) $(this).attr({
					src: $(this).data('lazy'),
					srcset: $(this).data('srcset')
				}).removeAttr('data-lazy').removeAttr('data-srcset').removeClass('slick-loading');
			})
		});
	}
})
/*page.js*/
$(document).ready(function() {
	/*翻页ajax加载*/
	if ($(".met-page-ajax").length) {
		if ($(".met_pager a").length == 1) $(".met_pager").addClass('hide');
		if ($(".met-page-ajax-body").hasClass("visible-xs-block")) {
			Breakpoints.get('xs').on({
				enter: function() {
					metpageajax();
				}
			});
		} else {
			metpageajax();
		}
	}
})
/*分页脚本*/
function metpageajax() {
	var pagebtn = $("#met-page-btn"),
		pageul = $(".met-page-ajax");
	window.pagemax = $(".met_pager a").length - 1;
	window.page = pagebtn.data("page");
	if (window.pagemax <= window.page) pagebtn.addClass('hide');
	pagebtn.click(function() {
		var dom = $(this);
		if (!dom.hasClass("disabled")) {
			page++;
			var l = Ladda.create(dom[0]);
			l.start();
			$.ajax({
				url: dom.data("url") + '&page=' + page,
				type: 'POST',
				success: function(data) {
					pageul.append(data);
					pagespecial(); /*特殊处理*/
					l.stop();
					if (pagemax <= page) dom.addClass('hide');
				}
			});
		}
	});
}
/*无刷新分页获取到数据追加到页面后，可以在此方法继续处理*/
function pagespecial() {
	/*图片高度预设*/
	imageSize(".met-page-ajax", "li.page" + page + " [data-original]");
	// 图片延迟加载
	$(".met-page-ajax li.page" + page + " [data-original]").lazyload();
	$('html,body').stop().animate({
		scrollTop: $(window).scrollTop() + 1
	}, 10);
	//产品模块瀑布流
	if ($('#met-grid').length) MetAnimOnScroll();
}
/*isotope.pkgd.min.js*/
/*!
 * Isotope PACKAGED v2.2.2
 *
 * Licensed GPLv3 for open source use
 * or Isotope Commercial License for commercial use
 *
 * http://isotope.metafizzy.co
 * Copyright 2015 Metafizzy
 */

! function(a) {
	function b() {}

	function c(a) {
		function c(b) {
			b.prototype.option || (b.prototype.option = function(b) {
				a.isPlainObject(b) && (this.options = a.extend(!0, this.options, b))
			})
		}

		function e(b, c) {
			a.fn[b] = function(e) {
				if ("string" == typeof e) {
					for (var g = d.call(arguments, 1), h = 0, i = this.length; i > h; h++) {
						var j = this[h],
							k = a.data(j, b);
						if (k)
							if (a.isFunction(k[e]) && "_" !== e.charAt(0)) {
								var l = k[e].apply(k, g);
								if (void 0 !== l) return l
							} else f("no such method '" + e + "' for " + b + " instance");
						else f("cannot call methods on " + b + " prior to initialization; attempted to call '" + e + "'")
					}
					return this
				}
				return this.each(function() {
					var d = a.data(this, b);
					d ? (d.option(e), d._init()) : (d = new c(this, e), a.data(this, b, d))
				})
			}
		}
		if (a) {
			var f = "undefined" == typeof console ? b : function(a) {
				console.error(a)
			};
			return a.bridget = function(a, b) {
				c(b), e(a, b)
			}, a.bridget
		}
	}
	var d = Array.prototype.slice;
	"function" == typeof define && define.amd ? define("jquery-bridget/jquery.bridget", ["jquery"], c) : c("object" ==
		typeof exports ? require("jquery") : a.jQuery)
}(window),
function(a) {
	function b(b) {
		var c = a.event;
		return c.target = c.target || c.srcElement || b, c
	}
	var c = document.documentElement,
		d = function() {};
	c.addEventListener ? d = function(a, b, c) {
		a.addEventListener(b, c, !1)
	} : c.attachEvent && (d = function(a, c, d) {
		a[c + d] = d.handleEvent ? function() {
			var c = b(a);
			d.handleEvent.call(d, c)
		} : function() {
			var c = b(a);
			d.call(a, c)
		}, a.attachEvent("on" + c, a[c + d])
	});
	var e = function() {};
	c.removeEventListener ? e = function(a, b, c) {
		a.removeEventListener(b, c, !1)
	} : c.detachEvent && (e = function(a, b, c) {
		a.detachEvent("on" + b, a[b + c]);
		try {
			delete a[b + c]
		} catch (d) {
			a[b + c] = void 0
		}
	});
	var f = {
		bind: d,
		unbind: e
	};
	"function" == typeof define && define.amd ? define("eventie/eventie", f) : "object" == typeof exports ? module.exports =
		f : a.eventie = f
}(window),
function() {
	"use strict";

	function a() {}

	function b(a, b) {
		for (var c = a.length; c--;)
			if (a[c].listener === b) return c;
		return -1
	}

	function c(a) {
		return function() {
			return this[a].apply(this, arguments)
		}
	}
	var d = a.prototype,
		e = this,
		f = e.EventEmitter;
	d.getListeners = function(a) {
		var b, c, d = this._getEvents();
		if (a instanceof RegExp) {
			b = {};
			for (c in d) d.hasOwnProperty(c) && a.test(c) && (b[c] = d[c])
		} else b = d[a] || (d[a] = []);
		return b
	}, d.flattenListeners = function(a) {
		var b, c = [];
		for (b = 0; b < a.length; b += 1) c.push(a[b].listener);
		return c
	}, d.getListenersAsObject = function(a) {
		var b, c = this.getListeners(a);
		return c instanceof Array && (b = {}, b[a] = c), b || c
	}, d.addListener = function(a, c) {
		var d, e = this.getListenersAsObject(a),
			f = "object" == typeof c;
		for (d in e) e.hasOwnProperty(d) && -1 === b(e[d], c) && e[d].push(f ? c : {
			listener: c,
			once: !1
		});
		return this
	}, d.on = c("addListener"), d.addOnceListener = function(a, b) {
		return this.addListener(a, {
			listener: b,
			once: !0
		})
	}, d.once = c("addOnceListener"), d.defineEvent = function(a) {
		return this.getListeners(a), this
	}, d.defineEvents = function(a) {
		for (var b = 0; b < a.length; b += 1) this.defineEvent(a[b]);
		return this
	}, d.removeListener = function(a, c) {
		var d, e, f = this.getListenersAsObject(a);
		for (e in f) f.hasOwnProperty(e) && (d = b(f[e], c), -1 !== d && f[e].splice(d, 1));
		return this
	}, d.off = c("removeListener"), d.addListeners = function(a, b) {
		return this.manipulateListeners(!1, a, b)
	}, d.removeListeners = function(a, b) {
		return this.manipulateListeners(!0, a, b)
	}, d.manipulateListeners = function(a, b, c) {
		var d, e, f = a ? this.removeListener : this.addListener,
			g = a ? this.removeListeners : this.addListeners;
		if ("object" != typeof b || b instanceof RegExp)
			for (d = c.length; d--;) f.call(this, b, c[d]);
		else
			for (d in b) b.hasOwnProperty(d) && (e = b[d]) && ("function" == typeof e ? f.call(this, d, e) : g.call(this, d, e));
		return this
	}, d.removeEvent = function(a) {
		var b, c = typeof a,
			d = this._getEvents();
		if ("string" === c) delete d[a];
		else if (a instanceof RegExp)
			for (b in d) d.hasOwnProperty(b) && a.test(b) && delete d[b];
		else delete this._events;
		return this
	}, d.removeAllListeners = c("removeEvent"), d.emitEvent = function(a, b) {
		var c, d, e, f, g = this.getListenersAsObject(a);
		for (e in g)
			if (g.hasOwnProperty(e))
				for (d = g[e].length; d--;) c = g[e][d], c.once === !0 && this.removeListener(a, c.listener), f = c.listener.apply(
					this, b || []), f === this._getOnceReturnValue() && this.removeListener(a, c.listener);
		return this
	}, d.trigger = c("emitEvent"), d.emit = function(a) {
		var b = Array.prototype.slice.call(arguments, 1);
		return this.emitEvent(a, b)
	}, d.setOnceReturnValue = function(a) {
		return this._onceReturnValue = a, this
	}, d._getOnceReturnValue = function() {
		return this.hasOwnProperty("_onceReturnValue") ? this._onceReturnValue : !0
	}, d._getEvents = function() {
		return this._events || (this._events = {})
	}, a.noConflict = function() {
		return e.EventEmitter = f, a
	}, "function" == typeof define && define.amd ? define("eventEmitter/EventEmitter", [], function() {
		return a
	}) : "object" == typeof module && module.exports ? module.exports = a : e.EventEmitter = a
}.call(this),
	function(a) {
		function b(a) {
			if (a) {
				if ("string" == typeof d[a]) return a;
				a = a.charAt(0).toUpperCase() + a.slice(1);
				for (var b, e = 0, f = c.length; f > e; e++)
					if (b = c[e] + a, "string" == typeof d[b]) return b
			}
		}
		var c = "Webkit Moz ms Ms O".split(" "),
			d = document.documentElement.style;
		"function" == typeof define && define.amd ? define("get-style-property/get-style-property", [], function() {
			return b
		}) : "object" == typeof exports ? module.exports = b : a.getStyleProperty = b
	}(window),
	function(a, b) {
		function c(a) {
			var b = parseFloat(a),
				c = -1 === a.indexOf("%") && !isNaN(b);
			return c && b
		}

		function d() {}

		function e() {
			for (var a = {
					width: 0,
					height: 0,
					innerWidth: 0,
					innerHeight: 0,
					outerWidth: 0,
					outerHeight: 0
				}, b = 0, c = h.length; c > b; b++) {
				var d = h[b];
				a[d] = 0
			}
			return a
		}

		function f(b) {
			function d() {
				if (!m) {
					m = !0;
					var d = a.getComputedStyle;
					if (j = function() {
							var a = d ? function(a) {
								return d(a, null)
							} : function(a) {
								return a.currentStyle
							};
							return function(b) {
								var c = a(b);
								return c || g("Style returned " + c +
									". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"), c
							}
						}(), k = b("boxSizing")) {
						var e = document.createElement("div");
						e.style.width = "200px", e.style.padding = "1px 2px 3px 4px", e.style.borderStyle = "solid", e.style.borderWidth =
							"1px 2px 3px 4px", e.style[k] = "border-box";
						var f = document.body || document.documentElement;
						f.appendChild(e);
						var h = j(e);
						l = 200 === c(h.width), f.removeChild(e)
					}
				}
			}

			function f(a) {
				if (d(), "string" == typeof a && (a = document.querySelector(a)), a && "object" == typeof a && a.nodeType) {
					var b = j(a);
					if ("none" === b.display) return e();
					var f = {};
					f.width = a.offsetWidth, f.height = a.offsetHeight;
					for (var g = f.isBorderBox = !(!k || !b[k] || "border-box" !== b[k]), m = 0, n = h.length; n > m; m++) {
						var o = h[m],
							p = b[o];
						p = i(a, p);
						var q = parseFloat(p);
						f[o] = isNaN(q) ? 0 : q
					}
					var r = f.paddingLeft + f.paddingRight,
						s = f.paddingTop + f.paddingBottom,
						t = f.marginLeft + f.marginRight,
						u = f.marginTop + f.marginBottom,
						v = f.borderLeftWidth + f.borderRightWidth,
						w = f.borderTopWidth + f.borderBottomWidth,
						x = g && l,
						y = c(b.width);
					y !== !1 && (f.width = y + (x ? 0 : r + v));
					var z = c(b.height);
					return z !== !1 && (f.height = z + (x ? 0 : s + w)), f.innerWidth = f.width - (r + v), f.innerHeight = f.height -
						(s + w), f.outerWidth = f.width + t, f.outerHeight = f.height + u, f
				}
			}

			function i(b, c) {
				if (a.getComputedStyle || -1 === c.indexOf("%")) return c;
				var d = b.style,
					e = d.left,
					f = b.runtimeStyle,
					g = f && f.left;
				return g && (f.left = b.currentStyle.left), d.left = c, c = d.pixelLeft, d.left = e, g && (f.left = g), c
			}
			var j, k, l, m = !1;
			return f
		}
		var g = "undefined" == typeof console ? d : function(a) {
				console.error(a)
			},
			h = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop",
				"marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"
			];
		"function" == typeof define && define.amd ? define("get-size/get-size", ["get-style-property/get-style-property"], f) :
			"object" == typeof exports ? module.exports = f(require("desandro-get-style-property")) : a.getSize = f(a.getStyleProperty)
	}(window),
	function(a) {
		function b(a) {
			"function" == typeof a && (b.isReady ? a() : g.push(a))
		}

		function c(a) {
			var c = "readystatechange" === a.type && "complete" !== f.readyState;
			b.isReady || c || d()
		}

		function d() {
			b.isReady = !0;
			for (var a = 0, c = g.length; c > a; a++) {
				var d = g[a];
				d()
			}
		}

		function e(e) {
			return "complete" === f.readyState ? d() : (e.bind(f, "DOMContentLoaded", c), e.bind(f, "readystatechange", c), e.bind(
				a, "load", c)), b
		}
		var f = a.document,
			g = [];
		b.isReady = !1, "function" == typeof define && define.amd ? define("doc-ready/doc-ready", ["eventie/eventie"], e) :
			"object" == typeof exports ? module.exports = e(require("eventie")) : a.docReady = e(a.eventie)
	}(window),
	function(a) {
		"use strict";

		function b(a, b) {
			return a[g](b)
		}

		function c(a) {
			if (!a.parentNode) {
				var b = document.createDocumentFragment();
				b.appendChild(a)
			}
		}

		function d(a, b) {
			c(a);
			for (var d = a.parentNode.querySelectorAll(b), e = 0, f = d.length; f > e; e++)
				if (d[e] === a) return !0;
			return !1
		}

		function e(a, d) {
			return c(a), b(a, d)
		}
		var f, g = function() {
			if (a.matches) return "matches";
			if (a.matchesSelector) return "matchesSelector";
			for (var b = ["webkit", "moz", "ms", "o"], c = 0, d = b.length; d > c; c++) {
				var e = b[c],
					f = e + "MatchesSelector";
				if (a[f]) return f
			}
		}();
		if (g) {
			var h = document.createElement("div"),
				i = b(h, "div");
			f = i ? b : e
		} else f = d;
		"function" == typeof define && define.amd ? define("matches-selector/matches-selector", [], function() {
			return f
		}) : "object" == typeof exports ? module.exports = f : window.matchesSelector = f
	}(Element.prototype),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["doc-ready/doc-ready",
				"matches-selector/matches-selector"
			], function(c, d) {
				return b(a, c, d)
			}) : "object" == typeof exports ? module.exports = b(a, require("doc-ready"), require("desandro-matches-selector")) :
			a.fizzyUIUtils = b(a, a.docReady, a.matchesSelector)
	}(window, function(a, b, c) {
		var d = {};
		d.extend = function(a, b) {
			for (var c in b) a[c] = b[c];
			return a
		}, d.modulo = function(a, b) {
			return (a % b + b) % b
		};
		var e = Object.prototype.toString;
		d.isArray = function(a) {
			return "[object Array]" == e.call(a)
		}, d.makeArray = function(a) {
			var b = [];
			if (d.isArray(a)) b = a;
			else if (a && "number" == typeof a.length)
				for (var c = 0, e = a.length; e > c; c++) b.push(a[c]);
			else b.push(a);
			return b
		}, d.indexOf = Array.prototype.indexOf ? function(a, b) {
			return a.indexOf(b)
		} : function(a, b) {
			for (var c = 0, d = a.length; d > c; c++)
				if (a[c] === b) return c;
			return -1
		}, d.removeFrom = function(a, b) {
			var c = d.indexOf(a, b); - 1 != c && a.splice(c, 1)
		}, d.isElement = "function" == typeof HTMLElement || "object" == typeof HTMLElement ? function(a) {
			return a instanceof HTMLElement
		} : function(a) {
			return a && "object" == typeof a && 1 == a.nodeType && "string" == typeof a.nodeName
		}, d.setText = function() {
			function a(a, c) {
				b = b || (void 0 !== document.documentElement.textContent ? "textContent" : "innerText"), a[b] = c
			}
			var b;
			return a
		}(), d.getParent = function(a, b) {
			for (; a != document.body;)
				if (a = a.parentNode, c(a, b)) return a
		}, d.getQueryElement = function(a) {
			return "string" == typeof a ? document.querySelector(a) : a
		}, d.handleEvent = function(a) {
			var b = "on" + a.type;
			this[b] && this[b](a)
		}, d.filterFindElements = function(a, b) {
			a = d.makeArray(a);
			for (var e = [], f = 0, g = a.length; g > f; f++) {
				var h = a[f];
				if (d.isElement(h))
					if (b) {
						c(h, b) && e.push(h);
						for (var i = h.querySelectorAll(b), j = 0, k = i.length; k > j; j++) e.push(i[j])
					} else e.push(h)
			}
			return e
		}, d.debounceMethod = function(a, b, c) {
			var d = a.prototype[b],
				e = b + "Timeout";
			a.prototype[b] = function() {
				var a = this[e];
				a && clearTimeout(a);
				var b = arguments,
					f = this;
				this[e] = setTimeout(function() {
					d.apply(f, b), delete f[e]
				}, c || 100)
			}
		}, d.toDashed = function(a) {
			return a.replace(/(.)([A-Z])/g, function(a, b, c) {
				return b + "-" + c
			}).toLowerCase()
		};
		var f = a.console;
		return d.htmlInit = function(c, e) {
			b(function() {
				for (var b = d.toDashed(e), g = document.querySelectorAll(".js-" + b), h = "data-" + b + "-options", i = 0, j =
						g.length; j > i; i++) {
					var k, l = g[i],
						m = l.getAttribute(h);
					try {
						k = m && JSON.parse(m)
					} catch (n) {
						f && f.error("Error parsing " + h + " on " + l.nodeName.toLowerCase() + (l.id ? "#" + l.id : "") + ": " + n);
						continue
					}
					var o = new c(l, k),
						p = a.jQuery;
					p && p.data(l, e, o)
				}
			})
		}, d
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("outlayer/item", ["eventEmitter/EventEmitter", "get-size/get-size",
			"get-style-property/get-style-property", "fizzy-ui-utils/utils"
		], function(c, d, e, f) {
			return b(a, c, d, e, f)
		}) : "object" == typeof exports ? module.exports = b(a, require("wolfy87-eventemitter"), require("get-size"),
			require("desandro-get-style-property"), require("fizzy-ui-utils")) : (a.Outlayer = {}, a.Outlayer.Item = b(a, a.EventEmitter,
			a.getSize, a.getStyleProperty, a.fizzyUIUtils))
	}(window, function(a, b, c, d, e) {
		"use strict";

		function f(a) {
			for (var b in a) return !1;
			return b = null, !0
		}

		function g(a, b) {
			a && (this.element = a, this.layout = b, this.position = {
				x: 0,
				y: 0
			}, this._create())
		}

		function h(a) {
			return a.replace(/([A-Z])/g, function(a) {
				return "-" + a.toLowerCase()
			})
		}
		var i = a.getComputedStyle,
			j = i ? function(a) {
				return i(a, null)
			} : function(a) {
				return a.currentStyle
			},
			k = d("transition"),
			l = d("transform"),
			m = k && l,
			n = !!d("perspective"),
			o = {
				WebkitTransition: "webkitTransitionEnd",
				MozTransition: "transitionend",
				OTransition: "otransitionend",
				transition: "transitionend"
			} [k],
			p = ["transform", "transition", "transitionDuration", "transitionProperty"],
			q = function() {
				for (var a = {}, b = 0, c = p.length; c > b; b++) {
					var e = p[b],
						f = d(e);
					f && f !== e && (a[e] = f)
				}
				return a
			}();
		e.extend(g.prototype, b.prototype), g.prototype._create = function() {
			this._transn = {
				ingProperties: {},
				clean: {},
				onEnd: {}
			}, this.css({
				position: "absolute"
			})
		}, g.prototype.handleEvent = function(a) {
			var b = "on" + a.type;
			this[b] && this[b](a)
		}, g.prototype.getSize = function() {
			this.size = c(this.element)
		}, g.prototype.css = function(a) {
			var b = this.element.style;
			for (var c in a) {
				var d = q[c] || c;
				b[d] = a[c]
			}
		}, g.prototype.getPosition = function() {
			var a = j(this.element),
				b = this.layout.options,
				c = b.isOriginLeft,
				d = b.isOriginTop,
				e = a[c ? "left" : "right"],
				f = a[d ? "top" : "bottom"],
				g = this.layout.size,
				h = -1 != e.indexOf("%") ? parseFloat(e) / 100 * g.width : parseInt(e, 10),
				i = -1 != f.indexOf("%") ? parseFloat(f) / 100 * g.height : parseInt(f, 10);
			h = isNaN(h) ? 0 : h, i = isNaN(i) ? 0 : i, h -= c ? g.paddingLeft : g.paddingRight, i -= d ? g.paddingTop : g.paddingBottom,
				this.position.x = h, this.position.y = i
		}, g.prototype.layoutPosition = function() {
			var a = this.layout.size,
				b = this.layout.options,
				c = {},
				d = b.isOriginLeft ? "paddingLeft" : "paddingRight",
				e = b.isOriginLeft ? "left" : "right",
				f = b.isOriginLeft ? "right" : "left",
				g = this.position.x + a[d];
			c[e] = this.getXValue(g), c[f] = "";
			var h = b.isOriginTop ? "paddingTop" : "paddingBottom",
				i = b.isOriginTop ? "top" : "bottom",
				j = b.isOriginTop ? "bottom" : "top",
				k = this.position.y + a[h];
			c[i] = this.getYValue(k), c[j] = "", this.css(c), this.emitEvent("layout", [this])
		}, g.prototype.getXValue = function(a) {
			var b = this.layout.options;
			return b.percentPosition && !b.isHorizontal ? a / this.layout.size.width * 100 + "%" : a + "px"
		}, g.prototype.getYValue = function(a) {
			var b = this.layout.options;
			return b.percentPosition && b.isHorizontal ? a / this.layout.size.height * 100 + "%" : a + "px"
		}, g.prototype._transitionTo = function(a, b) {
			this.getPosition();
			var c = this.position.x,
				d = this.position.y,
				e = parseInt(a, 10),
				f = parseInt(b, 10),
				g = e === this.position.x && f === this.position.y;
			if (this.setPosition(a, b), g && !this.isTransitioning) return void this.layoutPosition();
			var h = a - c,
				i = b - d,
				j = {};
			j.transform = this.getTranslate(h, i), this.transition({
				to: j,
				onTransitionEnd: {
					transform: this.layoutPosition
				},
				isCleaning: !0
			})
		}, g.prototype.getTranslate = function(a, b) {
			var c = this.layout.options;
			return a = c.isOriginLeft ? a : -a, b = c.isOriginTop ? b : -b, n ? "translate3d(" + a + "px, " + b + "px, 0)" :
				"translate(" + a + "px, " + b + "px)"
		}, g.prototype.goTo = function(a, b) {
			this.setPosition(a, b), this.layoutPosition()
		}, g.prototype.moveTo = m ? g.prototype._transitionTo : g.prototype.goTo, g.prototype.setPosition = function(a, b) {
			this.position.x = parseInt(a, 10), this.position.y = parseInt(b, 10)
		}, g.prototype._nonTransition = function(a) {
			this.css(a.to), a.isCleaning && this._removeStyles(a.to);
			for (var b in a.onTransitionEnd) a.onTransitionEnd[b].call(this)
		}, g.prototype._transition = function(a) {
			if (!parseFloat(this.layout.options.transitionDuration)) return void this._nonTransition(a);
			var b = this._transn;
			for (var c in a.onTransitionEnd) b.onEnd[c] = a.onTransitionEnd[c];
			for (c in a.to) b.ingProperties[c] = !0, a.isCleaning && (b.clean[c] = !0);
			if (a.from) {
				this.css(a.from);
				var d = this.element.offsetHeight;
				d = null
			}
			this.enableTransition(a.to), this.css(a.to), this.isTransitioning = !0
		};
		var r = "opacity," + h(q.transform || "transform");
		g.prototype.enableTransition = function() {
				this.isTransitioning || (this.css({
					transitionProperty: r,
					transitionDuration: this.layout.options.transitionDuration
				}), this.element.addEventListener(o, this, !1))
			}, g.prototype.transition = g.prototype[k ? "_transition" : "_nonTransition"], g.prototype.onwebkitTransitionEnd =
			function(a) {
				this.ontransitionend(a)
			}, g.prototype.onotransitionend = function(a) {
				this.ontransitionend(a)
			};
		var s = {
			"-webkit-transform": "transform",
			"-moz-transform": "transform",
			"-o-transform": "transform"
		};
		g.prototype.ontransitionend = function(a) {
			if (a.target === this.element) {
				var b = this._transn,
					c = s[a.propertyName] || a.propertyName;
				if (delete b.ingProperties[c], f(b.ingProperties) && this.disableTransition(), c in b.clean && (this.element.style[
						a.propertyName] = "", delete b.clean[c]), c in b.onEnd) {
					var d = b.onEnd[c];
					d.call(this), delete b.onEnd[c]
				}
				this.emitEvent("transitionEnd", [this])
			}
		}, g.prototype.disableTransition = function() {
			this.removeTransitionStyles(), this.element.removeEventListener(o, this, !1), this.isTransitioning = !1
		}, g.prototype._removeStyles = function(a) {
			var b = {};
			for (var c in a) b[c] = "";
			this.css(b)
		};
		var t = {
			transitionProperty: "",
			transitionDuration: ""
		};
		return g.prototype.removeTransitionStyles = function() {
			this.css(t)
		}, g.prototype.removeElem = function() {
			this.element.parentNode.removeChild(this.element), this.css({
				display: ""
			}), this.emitEvent("remove", [this])
		}, g.prototype.remove = function() {
			if (!k || !parseFloat(this.layout.options.transitionDuration)) return void this.removeElem();
			var a = this;
			this.once("transitionEnd", function() {
				a.removeElem()
			}), this.hide()
		}, g.prototype.reveal = function() {
			delete this.isHidden, this.css({
				display: ""
			});
			var a = this.layout.options,
				b = {},
				c = this.getHideRevealTransitionEndProperty("visibleStyle");
			b[c] = this.onRevealTransitionEnd, this.transition({
				from: a.hiddenStyle,
				to: a.visibleStyle,
				isCleaning: !0,
				onTransitionEnd: b
			})
		}, g.prototype.onRevealTransitionEnd = function() {
			this.isHidden || this.emitEvent("reveal")
		}, g.prototype.getHideRevealTransitionEndProperty = function(a) {
			var b = this.layout.options[a];
			if (b.opacity) return "opacity";
			for (var c in b) return c
		}, g.prototype.hide = function() {
			this.isHidden = !0, this.css({
				display: ""
			});
			var a = this.layout.options,
				b = {},
				c = this.getHideRevealTransitionEndProperty("hiddenStyle");
			b[c] = this.onHideTransitionEnd, this.transition({
				from: a.visibleStyle,
				to: a.hiddenStyle,
				isCleaning: !0,
				onTransitionEnd: b
			})
		}, g.prototype.onHideTransitionEnd = function() {
			this.isHidden && (this.css({
				display: "none"
			}), this.emitEvent("hide"))
		}, g.prototype.destroy = function() {
			this.css({
				position: "",
				left: "",
				right: "",
				top: "",
				bottom: "",
				transition: "",
				transform: ""
			})
		}, g
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("outlayer/outlayer", ["eventie/eventie",
			"eventEmitter/EventEmitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"
		], function(c, d, e, f, g) {
			return b(a, c, d, e, f, g)
		}) : "object" == typeof exports ? module.exports = b(a, require("eventie"), require("wolfy87-eventemitter"), require(
			"get-size"), require("fizzy-ui-utils"), require("./item")) : a.Outlayer = b(a, a.eventie, a.EventEmitter, a.getSize,
			a.fizzyUIUtils, a.Outlayer.Item)
	}(window, function(a, b, c, d, e, f) {
		"use strict";

		function g(a, b) {
			var c = e.getQueryElement(a);
			if (!c) return void(h && h.error("Bad element for " + this.constructor.namespace + ": " + (c || a)));
			this.element = c, i && (this.$element = i(this.element)), this.options = e.extend({}, this.constructor.defaults),
				this.option(b);
			var d = ++k;
			this.element.outlayerGUID = d, l[d] = this, this._create(), this.options.isInitLayout && this.layout()
		}
		var h = a.console,
			i = a.jQuery,
			j = function() {},
			k = 0,
			l = {};
		return g.namespace = "outlayer", g.Item = f, g.defaults = {
			containerStyle: {
				position: "relative"
			},
			isInitLayout: !0,
			isOriginLeft: !0,
			isOriginTop: !0,
			isResizeBound: !0,
			isResizingContainer: !0,
			transitionDuration: "0.4s",
			hiddenStyle: {
				opacity: 0,
				transform: "scale(0.001)"
			},
			visibleStyle: {
				opacity: 1,
				transform: "scale(1)"
			}
		}, e.extend(g.prototype, c.prototype), g.prototype.option = function(a) {
			e.extend(this.options, a)
		}, g.prototype._create = function() {
			this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), e.extend(this.element.style, this.options.containerStyle),
				this.options.isResizeBound && this.bindResize()
		}, g.prototype.reloadItems = function() {
			this.items = this._itemize(this.element.children)
		}, g.prototype._itemize = function(a) {
			for (var b = this._filterFindItemElements(a), c = this.constructor.Item, d = [], e = 0, f = b.length; f > e; e++) {
				var g = b[e],
					h = new c(g, this);
				d.push(h)
			}
			return d
		}, g.prototype._filterFindItemElements = function(a) {
			return e.filterFindElements(a, this.options.itemSelector)
		}, g.prototype.getItemElements = function() {
			for (var a = [], b = 0, c = this.items.length; c > b; b++) a.push(this.items[b].element);
			return a
		}, g.prototype.layout = function() {
			this._resetLayout(), this._manageStamps();
			var a = void 0 !== this.options.isLayoutInstant ? this.options.isLayoutInstant : !this._isLayoutInited;
			this.layoutItems(this.items, a), this._isLayoutInited = !0
		}, g.prototype._init = g.prototype.layout, g.prototype._resetLayout = function() {
			this.getSize()
		}, g.prototype.getSize = function() {
			this.size = d(this.element)
		}, g.prototype._getMeasurement = function(a, b) {
			var c, f = this.options[a];
			f ? ("string" == typeof f ? c = this.element.querySelector(f) : e.isElement(f) && (c = f), this[a] = c ? d(c)[b] :
				f) : this[a] = 0
		}, g.prototype.layoutItems = function(a, b) {
			a = this._getItemsForLayout(a), this._layoutItems(a, b), this._postLayout()
		}, g.prototype._getItemsForLayout = function(a) {
			for (var b = [], c = 0, d = a.length; d > c; c++) {
				var e = a[c];
				e.isIgnored || b.push(e)
			}
			return b
		}, g.prototype._layoutItems = function(a, b) {
			if (this._emitCompleteOnItems("layout", a), a && a.length) {
				for (var c = [], d = 0, e = a.length; e > d; d++) {
					var f = a[d],
						g = this._getItemLayoutPosition(f);
					g.item = f, g.isInstant = b || f.isLayoutInstant, c.push(g)
				}
				this._processLayoutQueue(c)
			}
		}, g.prototype._getItemLayoutPosition = function() {
			return {
				x: 0,
				y: 0
			}
		}, g.prototype._processLayoutQueue = function(a) {
			for (var b = 0, c = a.length; c > b; b++) {
				var d = a[b];
				this._positionItem(d.item, d.x, d.y, d.isInstant)
			}
		}, g.prototype._positionItem = function(a, b, c, d) {
			d ? a.goTo(b, c) : a.moveTo(b, c)
		}, g.prototype._postLayout = function() {
			this.resizeContainer()
		}, g.prototype.resizeContainer = function() {
			if (this.options.isResizingContainer) {
				var a = this._getContainerSize();
				a && (this._setContainerMeasure(a.width, !0), this._setContainerMeasure(a.height, !1))
			}
		}, g.prototype._getContainerSize = j, g.prototype._setContainerMeasure = function(a, b) {
			if (void 0 !== a) {
				var c = this.size;
				c.isBorderBox && (a += b ? c.paddingLeft + c.paddingRight + c.borderLeftWidth + c.borderRightWidth : c.paddingBottom +
					c.paddingTop + c.borderTopWidth + c.borderBottomWidth), a = Math.max(a, 0), this.element.style[b ? "width" :
					"height"] = a + "px"
			}
		}, g.prototype._emitCompleteOnItems = function(a, b) {
			function c() {
				e.dispatchEvent(a + "Complete", null, [b])
			}

			function d() {
				g++, g === f && c()
			}
			var e = this,
				f = b.length;
			if (!b || !f) return void c();
			for (var g = 0, h = 0, i = b.length; i > h; h++) {
				var j = b[h];
				j.once(a, d)
			}
		}, g.prototype.dispatchEvent = function(a, b, c) {
			var d = b ? [b].concat(c) : c;
			if (this.emitEvent(a, d), i)
				if (this.$element = this.$element || i(this.element), b) {
					var e = i.Event(b);
					e.type = a, this.$element.trigger(e, c)
				} else this.$element.trigger(a, c)
		}, g.prototype.ignore = function(a) {
			var b = this.getItem(a);
			b && (b.isIgnored = !0)
		}, g.prototype.unignore = function(a) {
			var b = this.getItem(a);
			b && delete b.isIgnored
		}, g.prototype.stamp = function(a) {
			if (a = this._find(a)) {
				this.stamps = this.stamps.concat(a);
				for (var b = 0, c = a.length; c > b; b++) {
					var d = a[b];
					this.ignore(d)
				}
			}
		}, g.prototype.unstamp = function(a) {
			if (a = this._find(a))
				for (var b = 0, c = a.length; c > b; b++) {
					var d = a[b];
					e.removeFrom(this.stamps, d), this.unignore(d)
				}
		}, g.prototype._find = function(a) {
			return a ? ("string" == typeof a && (a = this.element.querySelectorAll(a)), a = e.makeArray(a)) : void 0
		}, g.prototype._manageStamps = function() {
			if (this.stamps && this.stamps.length) {
				this._getBoundingRect();
				for (var a = 0, b = this.stamps.length; b > a; a++) {
					var c = this.stamps[a];
					this._manageStamp(c)
				}
			}
		}, g.prototype._getBoundingRect = function() {
			var a = this.element.getBoundingClientRect(),
				b = this.size;
			this._boundingRect = {
				left: a.left + b.paddingLeft + b.borderLeftWidth,
				top: a.top + b.paddingTop + b.borderTopWidth,
				right: a.right - (b.paddingRight + b.borderRightWidth),
				bottom: a.bottom - (b.paddingBottom + b.borderBottomWidth)
			}
		}, g.prototype._manageStamp = j, g.prototype._getElementOffset = function(a) {
			var b = a.getBoundingClientRect(),
				c = this._boundingRect,
				e = d(a),
				f = {
					left: b.left - c.left - e.marginLeft,
					top: b.top - c.top - e.marginTop,
					right: c.right - b.right - e.marginRight,
					bottom: c.bottom - b.bottom - e.marginBottom
				};
			return f
		}, g.prototype.handleEvent = function(a) {
			var b = "on" + a.type;
			this[b] && this[b](a)
		}, g.prototype.bindResize = function() {
			this.isResizeBound || (b.bind(a, "resize", this), this.isResizeBound = !0)
		}, g.prototype.unbindResize = function() {
			this.isResizeBound && b.unbind(a, "resize", this), this.isResizeBound = !1
		}, g.prototype.onresize = function() {
			function a() {
				b.resize(), delete b.resizeTimeout
			}
			this.resizeTimeout && clearTimeout(this.resizeTimeout);
			var b = this;
			this.resizeTimeout = setTimeout(a, 100)
		}, g.prototype.resize = function() {
			this.isResizeBound && this.needsResizeLayout() && this.layout()
		}, g.prototype.needsResizeLayout = function() {
			var a = d(this.element),
				b = this.size && a;
			return b && a.innerWidth !== this.size.innerWidth
		}, g.prototype.addItems = function(a) {
			var b = this._itemize(a);
			return b.length && (this.items = this.items.concat(b)), b
		}, g.prototype.appended = function(a) {
			var b = this.addItems(a);
			b.length && (this.layoutItems(b, !0), this.reveal(b))
		}, g.prototype.prepended = function(a) {
			var b = this._itemize(a);
			if (b.length) {
				var c = this.items.slice(0);
				this.items = b.concat(c), this._resetLayout(), this._manageStamps(), this.layoutItems(b, !0), this.reveal(b),
					this.layoutItems(c)
			}
		}, g.prototype.reveal = function(a) {
			this._emitCompleteOnItems("reveal", a);
			for (var b = a && a.length, c = 0; b && b > c; c++) {
				var d = a[c];
				d.reveal()
			}
		}, g.prototype.hide = function(a) {
			this._emitCompleteOnItems("hide", a);
			for (var b = a && a.length, c = 0; b && b > c; c++) {
				var d = a[c];
				d.hide()
			}
		}, g.prototype.revealItemElements = function(a) {
			var b = this.getItems(a);
			this.reveal(b)
		}, g.prototype.hideItemElements = function(a) {
			var b = this.getItems(a);
			this.hide(b)
		}, g.prototype.getItem = function(a) {
			for (var b = 0, c = this.items.length; c > b; b++) {
				var d = this.items[b];
				if (d.element === a) return d
			}
		}, g.prototype.getItems = function(a) {
			a = e.makeArray(a);
			for (var b = [], c = 0, d = a.length; d > c; c++) {
				var f = a[c],
					g = this.getItem(f);
				g && b.push(g)
			}
			return b
		}, g.prototype.remove = function(a) {
			var b = this.getItems(a);
			if (this._emitCompleteOnItems("remove", b), b && b.length)
				for (var c = 0, d = b.length; d > c; c++) {
					var f = b[c];
					f.remove(), e.removeFrom(this.items, f)
				}
		}, g.prototype.destroy = function() {
			var a = this.element.style;
			a.height = "", a.position = "", a.width = "";
			for (var b = 0, c = this.items.length; c > b; b++) {
				var d = this.items[b];
				d.destroy()
			}
			this.unbindResize();
			var e = this.element.outlayerGUID;
			delete l[e], delete this.element.outlayerGUID, i && i.removeData(this.element, this.constructor.namespace)
		}, g.data = function(a) {
			a = e.getQueryElement(a);
			var b = a && a.outlayerGUID;
			return b && l[b]
		}, g.create = function(a, b) {
			function c() {
				g.apply(this, arguments)
			}
			return Object.create ? c.prototype = Object.create(g.prototype) : e.extend(c.prototype, g.prototype), c.prototype.constructor =
				c, c.defaults = e.extend({}, g.defaults), e.extend(c.defaults, b), c.prototype.settings = {}, c.namespace = a, c.data =
				g.data, c.Item = function() {
					f.apply(this, arguments)
				}, c.Item.prototype = new f, e.htmlInit(c, a), i && i.bridget && i.bridget(a, c), c
		}, g.Item = f, g
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("isotope/js/item", ["outlayer/outlayer"], b) : "object" == typeof exports ?
			module.exports = b(require("outlayer")) : (a.Isotope = a.Isotope || {}, a.Isotope.Item = b(a.Outlayer))
	}(window, function(a) {
		"use strict";

		function b() {
			a.Item.apply(this, arguments)
		}
		b.prototype = new a.Item, b.prototype._create = function() {
			this.id = this.layout.itemGUID++, a.Item.prototype._create.call(this), this.sortData = {}
		}, b.prototype.updateSortData = function() {
			if (!this.isIgnored) {
				this.sortData.id = this.id, this.sortData["original-order"] = this.id, this.sortData.random = Math.random();
				var a = this.layout.options.getSortData,
					b = this.layout._sorters;
				for (var c in a) {
					var d = b[c];
					this.sortData[c] = d(this.element, this)
				}
			}
		};
		var c = b.prototype.destroy;
		return b.prototype.destroy = function() {
			c.apply(this, arguments), this.css({
				display: ""
			})
		}, b
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("isotope/js/layout-mode", ["get-size/get-size",
			"outlayer/outlayer"
		], b) : "object" == typeof exports ? module.exports = b(require("get-size"), require("outlayer")) : (a.Isotope = a.Isotope ||
			{}, a.Isotope.LayoutMode = b(a.getSize, a.Outlayer))
	}(window, function(a, b) {
		"use strict";

		function c(a) {
			this.isotope = a, a && (this.options = a.options[this.namespace], this.element = a.element, this.items = a.filteredItems,
				this.size = a.size)
		}
		return function() {
			function a(a) {
				return function() {
					return b.prototype[a].apply(this.isotope, arguments)
				}
			}
			for (var d = ["_resetLayout", "_getItemLayoutPosition", "_manageStamp", "_getContainerSize", "_getElementOffset",
					"needsResizeLayout"
				], e = 0, f = d.length; f > e; e++) {
				var g = d[e];
				c.prototype[g] = a(g)
			}
		}(), c.prototype.needsVerticalResizeLayout = function() {
			var b = a(this.isotope.element),
				c = this.isotope.size && b;
			return c && b.innerHeight != this.isotope.size.innerHeight
		}, c.prototype._getMeasurement = function() {
			this.isotope._getMeasurement.apply(this, arguments)
		}, c.prototype.getColumnWidth = function() {
			this.getSegmentSize("column", "Width")
		}, c.prototype.getRowHeight = function() {
			this.getSegmentSize("row", "Height")
		}, c.prototype.getSegmentSize = function(a, b) {
			var c = a + b,
				d = "outer" + b;
			if (this._getMeasurement(c, d), !this[c]) {
				var e = this.getFirstItemSize();
				this[c] = e && e[d] || this.isotope.size["inner" + b]
			}
		}, c.prototype.getFirstItemSize = function() {
			var b = this.isotope.filteredItems[0];
			return b && b.element && a(b.element)
		}, c.prototype.layout = function() {
			this.isotope.layout.apply(this.isotope, arguments)
		}, c.prototype.getSize = function() {
			this.isotope.getSize(), this.size = this.isotope.size
		}, c.modes = {}, c.create = function(a, b) {
			function d() {
				c.apply(this, arguments)
			}
			return d.prototype = new c, b && (d.options = b), d.prototype.namespace = a, c.modes[a] = d, d
		}, c
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("masonry/masonry", ["outlayer/outlayer", "get-size/get-size",
			"fizzy-ui-utils/utils"
		], b) : "object" == typeof exports ? module.exports = b(require("outlayer"), require("get-size"), require(
			"fizzy-ui-utils")) : a.Masonry = b(a.Outlayer, a.getSize, a.fizzyUIUtils)
	}(window, function(a, b, c) {
		var d = a.create("masonry");
		return d.prototype._resetLayout = function() {
			this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"),
				this.measureColumns();
			var a = this.cols;
			for (this.colYs = []; a--;) this.colYs.push(0);
			this.maxY = 0
		}, d.prototype.measureColumns = function() {
			if (this.getContainerWidth(), !this.columnWidth) {
				var a = this.items[0],
					c = a && a.element;
				this.columnWidth = c && b(c).outerWidth || this.containerWidth
			}
			var d = this.columnWidth += this.gutter,
				e = this.containerWidth + this.gutter,
				f = e / d,
				g = d - e % d,
				h = g && 1 > g ? "round" : "floor";
			f = Math[h](f), this.cols = Math.max(f, 1)
		}, d.prototype.getContainerWidth = function() {
			var a = this.options.isFitWidth ? this.element.parentNode : this.element,
				c = b(a);
			this.containerWidth = c && c.innerWidth
		}, d.prototype._getItemLayoutPosition = function(a) {
			a.getSize();
			var b = a.size.outerWidth % this.columnWidth,
				d = b && 1 > b ? "round" : "ceil",
				e = Math[d](a.size.outerWidth / this.columnWidth);
			e = Math.min(e, this.cols);
			for (var f = this._getColGroup(e), g = Math.min.apply(Math, f), h = c.indexOf(f, g), i = {
					x: this.columnWidth * h,
					y: g
				}, j = g + a.size.outerHeight, k = this.cols + 1 - f.length, l = 0; k > l; l++) this.colYs[h + l] = j;
			return i
		}, d.prototype._getColGroup = function(a) {
			if (2 > a) return this.colYs;
			for (var b = [], c = this.cols + 1 - a, d = 0; c > d; d++) {
				var e = this.colYs.slice(d, d + a);
				b[d] = Math.max.apply(Math, e)
			}
			return b
		}, d.prototype._manageStamp = function(a) {
			var c = b(a),
				d = this._getElementOffset(a),
				e = this.options.isOriginLeft ? d.left : d.right,
				f = e + c.outerWidth,
				g = Math.floor(e / this.columnWidth);
			g = Math.max(0, g);
			var h = Math.floor(f / this.columnWidth);
			h -= f % this.columnWidth ? 0 : 1, h = Math.min(this.cols - 1, h);
			for (var i = (this.options.isOriginTop ? d.top : d.bottom) + c.outerHeight, j = g; h >= j; j++) this.colYs[j] =
				Math.max(i, this.colYs[j])
		}, d.prototype._getContainerSize = function() {
			this.maxY = Math.max.apply(Math, this.colYs);
			var a = {
				height: this.maxY
			};
			return this.options.isFitWidth && (a.width = this._getContainerFitWidth()), a
		}, d.prototype._getContainerFitWidth = function() {
			for (var a = 0, b = this.cols; --b && 0 === this.colYs[b];) a++;
			return (this.cols - a) * this.columnWidth - this.gutter
		}, d.prototype.needsResizeLayout = function() {
			var a = this.containerWidth;
			return this.getContainerWidth(), a !== this.containerWidth
		}, d
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("isotope/js/layout-modes/masonry", ["../layout-mode",
			"masonry/masonry"
		], b) : "object" == typeof exports ? module.exports = b(require("../layout-mode"), require("masonry-layout")) : b(a.Isotope
			.LayoutMode, a.Masonry)
	}(window, function(a, b) {
		"use strict";

		function c(a, b) {
			for (var c in b) a[c] = b[c];
			return a
		}
		var d = a.create("masonry"),
			e = d.prototype._getElementOffset,
			f = d.prototype.layout,
			g = d.prototype._getMeasurement;
		c(d.prototype, b.prototype), d.prototype._getElementOffset = e, d.prototype.layout = f, d.prototype._getMeasurement =
			g;
		var h = d.prototype.measureColumns;
		d.prototype.measureColumns = function() {
			this.items = this.isotope.filteredItems, h.call(this)
		};
		var i = d.prototype._manageStamp;
		return d.prototype._manageStamp = function() {
			this.options.isOriginLeft = this.isotope.options.isOriginLeft, this.options.isOriginTop = this.isotope.options.isOriginTop,
				i.apply(this, arguments)
		}, d
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("isotope/js/layout-modes/fit-rows", ["../layout-mode"], b) :
			"object" == typeof exports ? module.exports = b(require("../layout-mode")) : b(a.Isotope.LayoutMode)
	}(window, function(a) {
		"use strict";
		var b = a.create("fitRows");
		return b.prototype._resetLayout = function() {
			this.x = 0, this.y = 0, this.maxY = 0, this._getMeasurement("gutter", "outerWidth")
		}, b.prototype._getItemLayoutPosition = function(a) {
			a.getSize();
			var b = a.size.outerWidth + this.gutter,
				c = this.isotope.size.innerWidth + this.gutter;
			0 !== this.x && b + this.x > c && (this.x = 0, this.y = this.maxY);
			var d = {
				x: this.x,
				y: this.y
			};
			return this.maxY = Math.max(this.maxY, this.y + a.size.outerHeight), this.x += b, d
		}, b.prototype._getContainerSize = function() {
			return {
				height: this.maxY
			}
		}, b
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define("isotope/js/layout-modes/vertical", ["../layout-mode"], b) :
			"object" == typeof exports ? module.exports = b(require("../layout-mode")) : b(a.Isotope.LayoutMode)
	}(window, function(a) {
		"use strict";
		var b = a.create("vertical", {
			horizontalAlignment: 0
		});
		return b.prototype._resetLayout = function() {
			this.y = 0
		}, b.prototype._getItemLayoutPosition = function(a) {
			a.getSize();
			var b = (this.isotope.size.innerWidth - a.size.outerWidth) * this.options.horizontalAlignment,
				c = this.y;
			return this.y += a.size.outerHeight, {
				x: b,
				y: c
			}
		}, b.prototype._getContainerSize = function() {
			return {
				height: this.y
			}
		}, b
	}),
	function(a, b) {
		"use strict";
		"function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size",
			"matches-selector/matches-selector", "fizzy-ui-utils/utils", "isotope/js/item", "isotope/js/layout-mode",
			"isotope/js/layout-modes/masonry", "isotope/js/layout-modes/fit-rows", "isotope/js/layout-modes/vertical"
		], function(c, d, e, f, g, h) {
			return b(a, c, d, e, f, g, h)
		}) : "object" == typeof exports ? module.exports = b(a, require("outlayer"), require("get-size"), require(
			"desandro-matches-selector"), require("fizzy-ui-utils"), require("./item"), require("./layout-mode"), require(
			"./layout-modes/masonry"), require("./layout-modes/fit-rows"), require("./layout-modes/vertical")) : a.Isotope = b(
			a, a.Outlayer, a.getSize, a.matchesSelector, a.fizzyUIUtils, a.Isotope.Item, a.Isotope.LayoutMode)
	}(window, function(a, b, c, d, e, f, g) {
		function h(a, b) {
			return function(c, d) {
				for (var e = 0, f = a.length; f > e; e++) {
					var g = a[e],
						h = c.sortData[g],
						i = d.sortData[g];
					if (h > i || i > h) {
						var j = void 0 !== b[g] ? b[g] : b,
							k = j ? 1 : -1;
						return (h > i ? 1 : -1) * k
					}
				}
				return 0
			}
		}
		var i = a.jQuery,
			j = String.prototype.trim ? function(a) {
				return a.trim()
			} : function(a) {
				return a.replace(/^\s+|\s+$/g, "")
			},
			k = document.documentElement,
			l = k.textContent ? function(a) {
				return a.textContent
			} : function(a) {
				return a.innerText
			},
			m = b.create("isotope", {
				layoutMode: "masonry",
				isJQueryFiltering: !0,
				sortAscending: !0
			});
		m.Item = f, m.LayoutMode = g, m.prototype._create = function() {
			this.itemGUID = 0, this._sorters = {}, this._getSorters(), b.prototype._create.call(this), this.modes = {}, this.filteredItems =
				this.items, this.sortHistory = ["original-order"];
			for (var a in g.modes) this._initLayoutMode(a)
		}, m.prototype.reloadItems = function() {
			this.itemGUID = 0, b.prototype.reloadItems.call(this)
		}, m.prototype._itemize = function() {
			for (var a = b.prototype._itemize.apply(this, arguments), c = 0, d = a.length; d > c; c++) {
				var e = a[c];
				e.id = this.itemGUID++
			}
			return this._updateItemsSortData(a), a
		}, m.prototype._initLayoutMode = function(a) {
			var b = g.modes[a],
				c = this.options[a] || {};
			this.options[a] = b.options ? e.extend(b.options, c) : c, this.modes[a] = new b(this)
		}, m.prototype.layout = function() {
			return !this._isLayoutInited && this.options.isInitLayout ? void this.arrange() : void this._layout()
		}, m.prototype._layout = function() {
			var a = this._getIsInstant();
			this._resetLayout(), this._manageStamps(), this.layoutItems(this.filteredItems, a), this._isLayoutInited = !0
		}, m.prototype.arrange = function(a) {
			function b() {
				d.reveal(c.needReveal), d.hide(c.needHide)
			}
			this.option(a), this._getIsInstant();
			var c = this._filter(this.items);
			this.filteredItems = c.matches;
			var d = this;
			this._bindArrangeComplete(), this._isInstant ? this._noTransition(b) : b(), this._sort(), this._layout()
		}, m.prototype._init = m.prototype.arrange, m.prototype._getIsInstant = function() {
			var a = void 0 !== this.options.isLayoutInstant ? this.options.isLayoutInstant : !this._isLayoutInited;
			return this._isInstant = a, a
		}, m.prototype._bindArrangeComplete = function() {
			function a() {
				b && c && d && e.dispatchEvent("arrangeComplete", null, [e.filteredItems])
			}
			var b, c, d, e = this;
			this.once("layoutComplete", function() {
				b = !0, a()
			}), this.once("hideComplete", function() {
				c = !0, a()
			}), this.once("revealComplete", function() {
				d = !0, a()
			})
		}, m.prototype._filter = function(a) {
			var b = this.options.filter;
			b = b || "*";
			for (var c = [], d = [], e = [], f = this._getFilterTest(b), g = 0, h = a.length; h > g; g++) {
				var i = a[g];
				if (!i.isIgnored) {
					var j = f(i);
					j && c.push(i), j && i.isHidden ? d.push(i) : j || i.isHidden || e.push(i)
				}
			}
			return {
				matches: c,
				needReveal: d,
				needHide: e
			}
		}, m.prototype._getFilterTest = function(a) {
			return i && this.options.isJQueryFiltering ? function(b) {
				return i(b.element).is(a)
			} : "function" == typeof a ? function(b) {
				return a(b.element)
			} : function(b) {
				return d(b.element, a)
			}
		}, m.prototype.updateSortData = function(a) {
			var b;
			a ? (a = e.makeArray(a), b = this.getItems(a)) : b = this.items, this._getSorters(), this._updateItemsSortData(b)
		}, m.prototype._getSorters = function() {
			var a = this.options.getSortData;
			for (var b in a) {
				var c = a[b];
				this._sorters[b] = n(c)
			}
		}, m.prototype._updateItemsSortData = function(a) {
			for (var b = a && a.length, c = 0; b && b > c; c++) {
				var d = a[c];
				d.updateSortData()
			}
		};
		var n = function() {
			function a(a) {
				if ("string" != typeof a) return a;
				var c = j(a).split(" "),
					d = c[0],
					e = d.match(/^\[(.+)\]$/),
					f = e && e[1],
					g = b(f, d),
					h = m.sortDataParsers[c[1]];
				return a = h ? function(a) {
					return a && h(g(a))
				} : function(a) {
					return a && g(a)
				}
			}

			function b(a, b) {
				var c;
				return c = a ? function(b) {
					return b.getAttribute(a)
				} : function(a) {
					var c = a.querySelector(b);
					return c && l(c)
				}
			}
			return a
		}();
		m.sortDataParsers = {
			parseInt: function(a) {
				return parseInt(a, 10)
			},
			parseFloat: function(a) {
				return parseFloat(a)
			}
		}, m.prototype._sort = function() {
			var a = this.options.sortBy;
			if (a) {
				var b = [].concat.apply(a, this.sortHistory),
					c = h(b, this.options.sortAscending);
				this.filteredItems.sort(c), a != this.sortHistory[0] && this.sortHistory.unshift(a)
			}
		}, m.prototype._mode = function() {
			var a = this.options.layoutMode,
				b = this.modes[a];
			if (!b) throw new Error("No layout mode: " + a);
			return b.options = this.options[a], b
		}, m.prototype._resetLayout = function() {
			b.prototype._resetLayout.call(this), this._mode()._resetLayout()
		}, m.prototype._getItemLayoutPosition = function(a) {
			return this._mode()._getItemLayoutPosition(a)
		}, m.prototype._manageStamp = function(a) {
			this._mode()._manageStamp(a)
		}, m.prototype._getContainerSize = function() {
			return this._mode()._getContainerSize()
		}, m.prototype.needsResizeLayout = function() {
			return this._mode().needsResizeLayout()
		}, m.prototype.appended = function(a) {
			var b = this.addItems(a);
			if (b.length) {
				var c = this._filterRevealAdded(b);
				this.filteredItems = this.filteredItems.concat(c)
			}
		}, m.prototype.prepended = function(a) {
			var b = this._itemize(a);
			if (b.length) {
				this._resetLayout(), this._manageStamps();
				var c = this._filterRevealAdded(b);
				this.layoutItems(this.filteredItems), this.filteredItems = c.concat(this.filteredItems), this.items = b.concat(
					this.items)
			}
		}, m.prototype._filterRevealAdded = function(a) {
			var b = this._filter(a);
			return this.hide(b.needHide), this.reveal(b.matches), this.layoutItems(b.matches, !0), b.matches
		}, m.prototype.insert = function(a) {
			var b = this.addItems(a);
			if (b.length) {
				var c, d, e = b.length;
				for (c = 0; e > c; c++) d = b[c], this.element.appendChild(d.element);
				var f = this._filter(b).matches;
				for (c = 0; e > c; c++) b[c].isLayoutInstant = !0;
				for (this.arrange(), c = 0; e > c; c++) delete b[c].isLayoutInstant;
				this.reveal(f)
			}
		};
		var o = m.prototype.remove;
		return m.prototype.remove = function(a) {
			a = e.makeArray(a);
			var b = this.getItems(a);
			o.call(this, a);
			var c = b && b.length;
			if (c)
				for (var d = 0; c > d; d++) {
					var f = b[d];
					e.removeFrom(this.filteredItems, f)
				}
		}, m.prototype.shuffle = function() {
			for (var a = 0, b = this.items.length; b > a; a++) {
				var c = this.items[a];
				c.sortData.random = Math.random()
			}
			this.options.sortBy = "random", this._sort(), this._layout()
		}, m.prototype._noTransition = function(a) {
			var b = this.options.transitionDuration;
			this.options.transitionDuration = 0;
			var c = a.call(this);
			return this.options.transitionDuration = b, c
		}, m.prototype.getFilteredItemElements = function() {
			for (var a = [], b = 0, c = this.filteredItems.length; c > b; b++) a.push(this.filteredItems[b].element);
			return a
		}, m
	});
/*filterable.min.js*/
/*!
 * remark (http://getbootstrapadmin.com/remark)
 * Copyright 2015 amazingsurge
 * Licensed under the Themeforest Standard Licenses
 */
$.components.register("filterable", {
	mode: "init",
	defaults: {
		animationOptions: {
			duration: 750,
			easing: "linear",
			queue: !1
		}
	},
	init: function(context) {
		if ("undefined" != typeof $.fn.isotope) {
			var defaults = $.components.getDefaults("filterable"),
				callback = function() {
					$("[data-filterable]", context).each(function() {
						var $this = $(this),
							options = $.extend(!0, {}, defaults, $this.data(), {
								filter: "*"
							});
						$this.isotope(options)
					}), $("[data-filter]", context).click(function(e) {
						var $this = $(this),
							target = $this.data("target"),
							$li = $this.parent("li");
						target || (target = $this.attr("href"), target = target && target.replace(/.*(?=#[^\s]*$)/, "")), $li.siblings(
							".active").each(function() {
							$(this).find("a").attr("aria-expanded", !1), $(this).removeClass("active")
						}), $li.addClass("active"), $this.attr("aria-expanded", !0);
						var $list = $(target, context),
							filter = $this.attr("data-filter");
						"*" !== filter && (filter = '[data-type="' + filter + '"]'), $list.isotope({
							filter: filter
						}), e.preventDefault()
					})
				};
			context !== document ? callback() : $(window).on("load", function() {
				callback()
			})
		}
	}
});
/*index.js*/
/*
 * M['weburl'] 		//网站网址
 * M['lang']  		//网站语言
 * M['tem']  		//模板目录路径
 * M['classnow']  	//当前栏目ID
 * M['id']  		//当前页面ID
 * M['module']  	//当前页面所属模块
 * lazyloadbg       //延迟加载背景图片，base64：默认灰色
 * deviceType       //设备判断（p：PC,t：平板，m：手机）
 */
$(document).ready(function() {
	if (M['classnow'] == 10001) {
		/*图片懒加载*/
		$(".met-index-body [data-original]").lazyload();
		/*产品列表*/
		if ($(".met-index-product").length) {
			//内滚导航条（移动端）
			navtabSwiper('.met-index-product .nav-tabs');
		}
		if ($('.met-index-news ul.blocks-2').length) imageSize('.met-index-news ul.blocks-2');
	}
})

/*editor.js*/
$(document).ready(function() {
	/*编辑器响应式表格*/
	if ($(".met-editor table").length) {
		$(".met-editor table").addClass('table table-bordered table-hover table-striped table-responsive');
		tablexys();
	}
	/*编辑器图片处理*/
	if ($(".met-editor img").length) {
		//图片懒加载
		$(".met-editor.lazyload img").lazyload({
			threshold: 200
		});
		// 编辑器画廊
		if (!$(".met-editor.no-gallery").length) {
			$(".met-editor").wrapInner("<div class='editorlightgallery'></div>");
			$(".met-editor").each(function() {
				var img_gallery_open = 1,
					this_editor = this;
				$("img", this).one('click', function() {
					if (img_gallery_open) {
						$('img', this_editor).each(function() {
							if ($(this).parent("a").length == 0) {
								var data_src = $(this).data("original") ? $(this).data("original") : $(this).attr("src");
								if ($(this).hasClass('imgload')) {
									var data_thumbs = data_src.split('upload/'),
										data_thumb = '../include/thumb.php?dir=../upload/' + data_thumbs[1] + '&x=60&y=60';
								} else {
									var data_thumb = data_src;
								}
								$(this).wrap("<div class='lg-item-box' data-src='" + data_src + "' data-exthumbimage='" + data_thumb +
									"'></div>");
							}
						});
						//画廊加载
						$('.editorlightgallery', this_editor).galleryLoad();
						$(this).parent('.lg-item-box').trigger('click');
						img_gallery_open = 0;
					}
				});
			});
		}
	}
})
/*表格格式化*/
function tablexys() {
	Breakpoints.get('xs').on({
		enter: function() {
			$(".met-editor table").each(function() {
				var table = $(this);
				if (table.is(':visible') && !table.hasClass('tablesaw')) {
					if (table.find("thead").length) {
						table.addClass('tablesaw').attr("data-tablesaw-mode", "swipe");
					} else {
						var td = table.find("tbody tr:eq(0) td"),
							th;
						if (td.length == 0) td = table.find("tbody tr:eq(0) th");
						td.each(function() {
							th += '<th>' + $(this).html() + '</th>';
						});
						table.prepend("<thead><tr>" + th + "</tr></thead>");
						table.find("tbody tr:eq(0)").remove();
						table.find("tbody td").attr('width', 'auto');
						table.addClass('tablesaw').attr("data-tablesaw-mode", "swipe");
					}
				}
			});
			$('.met-editor .table-responsive').parent().addClass('table-saw');
			$(document).trigger("enhance.tablesaw");
		}
	});
}
/*own.js*/
/*
 * M['weburl'] 		//网站网址
 * M['lang']  		//网站语言
 * M['tem']  		//模板目录路径
 * M['classnow']  	//当前栏目ID
 * M['id']  		//当前页面ID
 * M['module']  	//当前页面所属模块
 * lazyloadbg       //延迟加载背景图片,base64：默认灰色
 * deviceType       //设备判断（p：PC,t：平板，m：手机）
 */
$(document).ready(function() {
	/*导航处理*/
	if (deviceType != 'p') {
		$('body').wrapInner('<div class="cover"></div>');
		$('.met-nav .nav>li>.dropdown-menu .visible-xs').removeClass('visible-xs');
	}
	$('.met-nav .dropdown a.link').click(function() {
		if (deviceType == 'p' && !Breakpoints.is('xs') && $(this).data("hover") && $(this).attr("target") == "_blank") {
			window.open($(this).attr('href'), "_blank");
		} else if (deviceType == 'p' && !Breakpoints.is('xs') && $(this).data("hover")) {
			window.location.href = $(this).attr('href');
		}
	});

	/*顶部固定边框阴影处理*/
	var navbarTop = $(".navbar-fixed-top");
	if (navbarTop.length && deviceType == 'p') {
		$(window).scroll(function() {
			if (navbarTop.offset().top > 1) {
				navbarTop.addClass("navbar-shadow animated fadeInUp");
			} else {
				navbarTop.removeClass("navbar-shadow animated fadeInUp");
			}
		});
	}

	/*下拉菜单动画修复*/
	$(".navlist .dropdown-submenu").hover(
		function() {
			$(this).parent('.dropdown-menu').addClass('overflow-visible');
		},
		function() {
			$(this).parent('.dropdown-menu').removeClass('overflow-visible');
		}
	);
	var nav_li = $(".navlist .dropdown");
	(function($) {
		$.fn.hoverDelay = function(options) {
			var defaults = {
				// 鼠标经过的延时时间
				hoverDuring: 200,
				// 鼠标移出的延时时间
				outDuring: 0,
				// 鼠标经过执行的方法
				hoverEvent: function() {
					// 设置为空函数，绑定的时候由使用者定义
					$.noop();
				},
				// 鼠标移出执行的方法
				outEvent: function() {
					$.noop();
				}
			};
			var sets = $.extend(defaults, options || {});
			var hoverTimer, outTimer;
			return $(this).each(function() {
				// 保存当前上下文的this对象
				var $this = $(this)
				$this.hover(function() {
					clearTimeout(outTimer);
					hoverTimer = setTimeout(function() {
						// 调用替换
						sets.hoverEvent.apply($this);
					}, sets.hoverDuring);
				}, function() {
					clearTimeout(hoverTimer);
					outTimer = setTimeout(function() {
						sets.outEvent.apply($this);
					}, sets.outDuring);
				});
			});
		}
	})(jQuery);
	// 具体使用，给id为“#test”的元素添加hoverEvent事件
	if (nav_li.find('[data-hover]').length) {
		nav_li.hoverDelay({
			// 自定义，outEvent同
			hoverEvent: function() {
				$(this).addClass('open');
			},
			outEvent: function() {
				$(this).removeClass('open');
			}
		});
	}
	/*服务范围*/
	var service_show = $("#serviceSlick").data("show");
	if (service_show) {
		$('#serviceSlick').slick({
			lazyLoad: 'progressive',
			slidesToShow: 4,
			slidesToScroll: 2,
			prevArrow: '<a class="slick-prev" href=""><i class="fa fa-angle-left"></i></a>',
			nextArrow: '<a class="slick-next" href=""><i class="fa fa-angle-right"></i></a>',
			responsive: [{
				breakpoint: 2000,
				settings: {
					slidesToShow: service_show[6],
					slidesToScroll: 1
				}
			}, {
				breakpoint: 1600,
				settings: {
					slidesToShow: service_show[4],
					slidesToScroll: 1
				}
			}, {
				breakpoint: 991,
				settings: {
					slidesToShow: service_show[2],
					slidesToScroll: 1,
				}
			}, {
				breakpoint: 767,
				settings: {
					slidesToShow: service_show[0],
					slidesToScroll: 1
				}
			}]
		})
	}
	/*精英团队*/
	$('#exampleResponsive').slick({
		lazyLoad: 'ondemand',
		dots: true,
		infinite: false,
		speed: 500,
		slidesToShow: 3,
		slidesToScroll: 3,
		responsive: [{
			breakpoint: 1024,
			settings: {
				slidesToShow: 2,
				slidesToScroll: 2,
				dots: true
			}
		}, {
			breakpoint: 600,
			settings: {
				slidesToShow: 1,
				slidesToScroll: 1,
				dots: true
			}
		}]
	});
	/*项目案例*/
	var product_show = $("#product_list").data("show");
	if (product_show) {
		$('#product_list').slick({
			slidesToShow: 4,
			slidesToScroll: 1,
			prevArrow: '<a class="slick-prev" href=""><i class="fa fa-long-arrow-left"></i></a>',
			nextArrow: '<a class="slick-next" href=""><i class="fa fa-long-arrow-right"></i></a>',
			responsive: [{
				breakpoint: 2000,
				settings: {
					slidesToShow: product_show[6],
					slidesToScroll: 1,
				}
			}, {
				breakpoint: 1600,
				settings: {
					slidesToShow: product_show[4],
					slidesToScroll: 1,
				}
			}, {
				breakpoint: 991,
				settings: {
					slidesToShow: product_show[2],
					slidesToScroll: 1,
				}
			}, {
				breakpoint: 767,
				settings: {
					slidesToShow: product_show[0],
					slidesToScroll: 1,

				}
			}]
		})
	}
	/*大图轮播*/
	var metbanner = $('.met-banner'),
		metbanner_slide = '.met-banner .slick-slide';
	var bw = $("body").width();
	if (metbanner.length) {
		imageloadFun('.met-banner img:eq(0)', function() {
			var datah = metbanner.data('height').split('|'),
				bannerAutoH = function() { //自适应
					metbanner.find('img[srcset]').height('auto');
					metbanner.find('img[data-lazy]').height(metbanner.find('img[srcset]').height());
					if (metbanner.hasClass('fixedheight')) {
						metbanner.find('img').width('');
						var x = metbanner.find('img[srcset]').height();
						metbanner.height(metbanner.find('img[srcset]').height());
					} else {
						metbanner.height('auto');
					}
				},
				bannerFixedHeight = function(res) { //固定高度
					metbanner.find('img').height('').width('auto');
					metbanner.height(datah[res]);
				};
			if (metbanner.hasClass('fixedheight')) {
				Breakpoints.on('md lg', {
					enter: function() {
						bannerFixedHeight(0);
					}
				})
				Breakpoints.on('sm', {
					enter: function() {
						bannerFixedHeight(1);
					}
				})
				Breakpoints.on('xs', {
					enter: function() {
						bannerFixedHeight(2);
					}
				})
				$(window).resize(function() {
					if ($(window).width() < 430) bannerFixedHeight(2);
				})
			} else {
				bannerAutoH();
				$(window).resize(function() {
					bannerAutoH();
				})
			};
			if ($(metbanner_slide).length > 1) {
				metbanner.slick({
					autoplay: true,
					dots: false,
					autoplaySpeed: 4000,
					pauseOnHover: false,
					fade: true,
					prevArrow: '<a class="slick-prev" href=""><i class="fa fa-angle-left"></i></a>',
					nextArrow: '<a class="slick-next" href=""><i class="fa fa-angle-left"></i></a>',
					responsive: [{
						breakpoint: 991,
						settings: {
							dots: true,
							fade: false,
						}
					}]
				});
				metbanner.on('setPosition', function(event, slick) {
					$(metbanner_slide + ' .banner-text').addClass('hide');
					$(metbanner_slide + '.slick-active .banner-text').removeClass('hide');
					var banner_index = metbanner.find('.slick-active').index(),
						bannerprev = banner_index - 1,
						bannernext = banner_index + 1;
					metbanner_prevnext = metbanner_slide + ':eq(' + bannerprev + '),' + metbanner_slide + ':eq(' + bannernext +
						')';
					$(metbanner_prevnext).find('img').each(function() {
						if ($(this).attr('data-lazy')) $(this).attr({
							src: $(this).data('original'),
							srcset: $(this).data('srcset')
						}).removeAttr('data-lazy').removeAttr('data-srcset').removeClass('slick-loading');
					})
				});
				if (deviceType == 'p') $(metbanner).slick('slickSetOption', 'swipe', false);
			}
		})
	}

	/*内页内滚导航条（移动端）*/
	if ($('.met-column-nav-ul').length) navtabSwiper('.met-column-nav-ul');


	/*底部微信*/
	if ($('#met-weixin').length) {
		var defaults = $.components.getDefaults("webuiPopover");
		var weixinContent = $('#met-weixin-content').html(),
			weixinSettings = {
				title: '',
				content: weixinContent,
				placement: 'top',
				trigger: 'hover',
				width: 162,
				padding: false,
				offsetTop: -10,
				animation: 'pop'
			};
		$('#met-weixin').webuiPopover($.extend({}, defaults, weixinSettings));
	}
	/*底部导航手机端处理*/
	if ($('.met-footnav').length) {
		Breakpoints.get('xs').on({
			enter: function() {
				$('.met-footnav .mob-masonry').masonry({
					itemSelector: ".masonry-item"
				});
			}
		});
	}
	/*返回顶部*/
	$(".met-scroll-top").click(function() {
		$('html,body').animate({
			'scrollTop': 0
		}, 300);
	});
	//
	var wh = $(window).height();
	$(window).scroll(function() {
		if ($(this).scrollTop() > wh) {
			$(".met-scroll-top").removeClass('hide').addClass("animation-slide-bottom");
		} else {
			$(".met-scroll-top").addClass('hide').removeClass('animation-slide-bottom');
		}
	});

	/*首页窗口内动画预加载*/
	$('.met-index-body:eq(0) [data-plugin=appear],.met-page-ajax-body[data-plugin=appear]').each(function() {
		var thisT = $(this).offset().top,
			thisH = $(this).height();
		if (thisT < wh + $(window).scrollTop()) {
			var dataAnimate = $(this).attr('data-animate');
			$(this).removeClass("invisible").removeAttr('data-plugin').removeAttr('data-animate').addClass(
				'appear-no-repeat animation-' + dataAnimate);
			$('img', this).each(function() {
				$(this).attr({
					src: $(this).data('original'),
					srcset: $(this).data('srcset')
				}).removeClass('imgloading').removeAttr('data-original').removeAttr('data-srcset');
			});
		}
	});
})
/*选项卡滑动导航标准处理（移动端）*/
function navtabSwiper(navObj) {
	var navtabSdefault = function() {
		var navObjW = sonWidthSum(navObj + '>li') + $('.caret', navObj).length;
		if (navObjW > $(navObj).parent().width()) {
			if ($(navObj).hasClass('swiper-wrapper')) {
				if (!$(navObj).hasClass('flex-start')) $(navObj).addClass('flex-start');
			} else {
				$(navObj)
					.addClass("swiper-wrapper flex-start")
					.wrap("<div class=\"swiper-container swiper-navtab\"></div>").after('<div class="swiper-scrollbar"></div>')
					.find(">li").addClass("swiper-slide");
				var swiperNavtab = new Swiper('.swiper-navtab', {
					slidesPerView: 'auto',
					scrollbar: '.swiper-scrollbar',
					scrollbarHide: false,
					scrollbarDraggable: true,
					preventClicks: false
				});
			}
		} else if ($(navObj).hasClass('flex-start')) {
			$(navObj).removeClass('flex-start');
		}
	};
	navtabSdefault();
	$(window).resize(function() {
		navtabSdefault();
	})
	//下拉菜单被隐藏特殊情况处理
	if ($(navObj + ' .dropdown').length) {
		$(".swiper-navtab").addClass("overflow-visible");
		$(".sidebar_tile").addClass("overflow-visible");
	}
}
/*异步加载文件*/
function include(file, fun) {
	var files = typeof file == "string" ? [file] : file;
	for (var i = 0; i < files.length; i++) {
		var name = files[i].replace(/^\s|\s$/g, ""),
			att = name.split('.'),
			ext = att[att.length - 1].toLowerCase();
		if (ext == 'js') {
			var filesi = document.createElement('script');
			filesi.src = name;
			filesi.type = "text/javascript";
		} else if (ext == 'css') {
			var filesi = document.createElement('link');
			filesi.href = name;
			filesi.type = 'text/css';
			filesi.rel = "stylesheet";
		}
		if (typeof filesi != "undefined") {
			document.getElementsByTagName('head')[0].appendChild(filesi);
		}
		if (typeof fun === "function") {
			filesi.onload = filesi.onreadystatechange = function() {
				var r = filesi.readyState;
				if (!r || r === 'loaded' || r === 'complete') {
					filesi.onload = filesi.onreadystatechange = null;
					fun();
				}
			};
		}
	}
}
/*图片高度预设*/
function imageSize(risObj, risImg) {
	var risObjs = risObj.split(','),
		risImg = risImg ? risImg : 'img';
	for (var i = 0; i < risObjs.length; i++) {
		$(risObjs[i]).each(function() {
			var scale = $(this).data('scale');
			if (scale) {
				$(risImg, this).height($(risImg, this).width() * scale);
				$(risImg, this).each(function() {
					var thisimg = $(this);
					imageloadFun(this, function() {
						thisimg.height('');
					})
				});
				var $this = $(this);
				$(window).resize(function() {
					var resImg = $this.find(risImg + '.imgload');
					resImg.height(resImg.width() * scale);
				});
			}
		});
	}
}
/*图片加载完成回调*/
function imageloadFun(risObj, fun) {
	$(risObj).each(function() {
		if ($(this).data('lazy') || $(this).data('original')) {
			var thisimg = $(this),
				loadtime = setInterval(function() {
					if (thisimg.attr('src') == thisimg.data('original') || thisimg.attr('src') == thisimg.data('lazy')) {
						clearInterval(loadtime);
						var img = new Image(),
							img_url = thisimg.attr('src');
						img.src = img_url;
						if (img.complete) {
							if (typeof fun === "function") fun();
							return;
						}
						img.onload = function() {
							if (typeof fun === "function") fun();
						};
					}
				}, 100)
		} else if ($(this).attr('src')) {
			var img = new Image(),
				img_url = $(this).attr('src');
			img.src = img_url;
			if (img.complete) {
				if (typeof fun === "function") fun();
				return;
			}
			img.onload = function() {
				if (typeof fun === "function") fun();
			};
		}
	});
};
/*父元素宽度计算*/
function sonWidthSum(sonObj, sonNum) {
	var sonObjs = $(sonObj),
		sonTrueNum = sonObjs.length,
		parentObjW = 0;
	if (sonNum > sonTrueNum || !sonNum) sonNum = sonTrueNum;
	for (var i = 0; i < sonNum; i++) {
		var sonObjW = sonObjs.eq(i).outerWidth() + parseInt(sonObjs.eq(i).css('marginLeft')) + parseInt(sonObjs.eq(i).css(
			'marginRight'));
		parentObjW += sonObjW;
	}
	return parentObjW + sonNum;
}
/*手动appear动画*/
// function appear(appearObj,isappear){
//     thisAppear=$(appearObj).data('animate')?$(appearObj):$(appearObj).find('[data-animate]');
//     thisAppear.each(function() {
//         var animate=$(this).data('animate'),
//             animation='animation-'+animate+'';
//         if(isappear){
//             $(this).addClass(animation).addClass('appear-no-repeat').removeClass('invisible');
//         }else{
//             $(this).removeClass(animation).removeClass('appear-no-repeat').addClass('invisible');
//         }
//     });
// }
/*画廊*/
$.fn.galleryLoad = function(dynamic) {
	$("body").addClass("met-white-lightGallery"); //画廊皮肤
	if (dynamic) {
		$(this).lightGallery({
			autoplayControls: false,
			getCaptionFromTitleOrAlt: false,
			dynamic: true,
			dynamicEl: dynamic,
			thumbWidth: 64,
			thumbContHeight: 84,
		});
	} else {
		$(this).lightGallery({
			selector: '.lg-item-box:not(.slick-cloned)',
			autoplayControls: false,
			exThumbImage: 'data-exthumbimage',
			getCaptionFromTitleOrAlt: false,
			thumbWidth: 64,
			thumbContHeight: 84,
		});
	}
	$(this).on('onSlideClick.lg', function() {
		$('.lg-outer .lg-toolbar').toggleClass('opacity0');
		if ($('.lg-outer .lg-toolbar').hasClass('opacity0')) {
			$('.lg-outer').removeClass('lg-thumb-open');
		} else {
			$('.lg-outer').addClass('lg-thumb-open');
		}
		if (Breakpoints.is('xs')) {
			if ($('.lg-outer .lg-toolbar').hasClass('opacity0')) {
				$('.lg-outer .lg-actions').addClass('hide');
			} else {
				$('.lg-outer .lg-actions').removeClass('hide');
			}
		} else {
			$('.lg-outer .lg-actions').removeClass('hide');
		}
	});
}
/*sys.js*/
var Site = window.Site;
$(document).ready(function() {
	Site.run();
	/*视频插件异步加载*/
	if ($(".metvideobox").length > 0) {
		$(".metvideobox").each(function() {
			var data = $(this).attr("data-metvideo");
			data = data.split("|");
			var width = data[0],
				height = data[1],
				poster = data[2],
				autoplay = data[3],
				src = data[4];
			var vhtml =
				'<div class="metvideobox"><video class="metvideo video-js vjs-default-skin" controls preload="none" width="' +
				width + '" height="' + height + '" poster="' + poster + '" data-setup=\'{\"autoplay\": ' + autoplay + '}\'>';
			vhtml += '<source src="' + src + '" type="video/mp4" />';
			vhtml += '</video></div>';
			$(this).after(vhtml).remove();
		});
		include(M['tem'] + '/min/widget/video-js/video-js.css');
		if (deviceType == 'p') {
			include(M['tem'] + '/min/widget/video-js/video.js', function() {
				// videojs.options.flash.swf = M['tem'] + '/min/widget/video-js/video-js.swf';
			});
		} else {
			$('.metvideo').each(function() {
				var scale = $(this).attr('height') / $(this).attr('width');
				$(this).height($(this).width() * scale);
				$(window).resize(function() {
					$(this).height($(this).width() * scale);
				});
			});
		}
	}
});
$(document).ready(function() {
	if ($(".met-form .met-form-codeimg").length) {
		$(document).on('focus', ".met-form input[name='code']", function() {
			codeimgRefresh();
		})
		$(document).on('click', ".met-form-codeimg", function() {
			codeimgRefresh();
		})
	}
});

function codeimgRefresh() {
	var url = $(".met-form-codeimg").data("url");
	$(".met-form-codeimg").attr("src", url + '&random=' + Math.floor(Math.random() * 9999 + 1));
}
if (M["module"] && M["id"]) {
	var modulename = "";
	switch (M["module"]) {
		case 2:
			modulename = "news";
			break;
		case 3:
			modulename = "product";
			break;
		case 4:
			modulename = "download";
			break;
		case 5:
			modulename = "img";
			break
	}
	if (modulename != "") {
		$.ajax({
			type: "POST",
			url: M["weburl"] + "include/hits.php?type=" + modulename + "&id=" + M["id"] + "&metinfover=v1"
		})
	}
}
var url = M["weburl"] + "include/interface/uidata.php?lang=" + M["lang"],
	h = window.location.href;
if (h.indexOf("preview=1") != -1) {
	url = url + "&theme_preview=1"
}
$.ajax({
	type: "POST",
	url: url,
	dataType: "json",
	success: function(msg) {
		var c = msg.config;
		if (c.met_online_type != 3) {
			$.extend({
				includePath: "",
				include: function(file) {
					var files = typeof file == "string" ? [file] : file;
					for (var i = 0; i < files.length; i++) {
						var name = files[i].replace(/^\s|\s$/g, "");
						var att = name.split(".");
						var ext = att[att.length - 1].toLowerCase();
						var isCSS = ext == "css";
						var tag = isCSS ? "link" : "script";
						var attr = isCSS ? " type='text/css' rel='stylesheet' " : " type='text/javascript' ";
						var link = (isCSS ? "href" : "src") + "='" + $.includePath + name + "'";
						if ($(tag + "[" + link + "]").length == 0) {
							$("head").prepend("<" + tag + attr + link + "></" + tag + ">")
						}
					}
				}
			});
			$.include(M["weburl"] + "public/css/online.css");
			/*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */
			jQuery.migrateMute === void 0 && (jQuery.migrateMute = !0),
				function(e, t, n) {
					function r(n) {
						var r = t.console;
						i[n] || (i[n] = !0, e.migrateWarnings.push(n), r && r.warn && !e.migrateMute && (r.warn("JQMIGRATE: " + n), e.migrateTrace &&
							r.trace && r.trace()))
					}

					function a(t, a, i, o) {
						if (Object.defineProperty) {
							try {
								return Object.defineProperty(t, a, {
									configurable: !0,
									enumerable: !0,
									get: function() {
										return r(o), i
									},
									set: function(e) {
										r(o), i = e
									}
								}), n
							} catch (s) {}
						}
						e._definePropertyBroken = !0, t[a] = i
					}
					var i = {};
					e.migrateWarnings = [], !e.migrateMute && t.console && t.console.log && t.console.log(
						"JQMIGRATE: Logging is active"), e.migrateTrace === n && (e.migrateTrace = !0), e.migrateReset = function() {
						i = {}, e.migrateWarnings.length = 0
					}, "BackCompat" === document.compatMode && r("jQuery is not compatible with Quirks Mode");
					var o = e("<input/>", {
							size: 1
						}).attr("size") && e.attrFn,
						s = e.attr,
						u = e.attrHooks.value && e.attrHooks.value.get || function() {
							return null
						},
						c = e.attrHooks.value && e.attrHooks.value.set || function() {
							return n
						},
						l = /^(?:input|button)$/i,
						d = /^[238]$/,
						p =
						/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
						f = /^(?:checked|selected)$/i;
					a(e, "attrFn", o || {}, "jQuery.attrFn is deprecated"), e.attr = function(t, a, i, u) {
						var c = a.toLowerCase(),
							g = t && t.nodeType;
						return u && (4 > s.length && r("jQuery.fn.attr( props, pass ) is deprecated"), t && !d.test(g) && (o ? a in o :
							e.isFunction(e.fn[a]))) ? e(t)[a](i) : ("type" === a && i !== n && l.test(t.nodeName) && t.parentNode && r(
							"Can't change the 'type' of an input or button in IE 6/7/8"), !e.attrHooks[c] && p.test(c) && (e.attrHooks[
							c] = {
							get: function(t, r) {
								var a, i = e.prop(t, r);
								return i === !0 || "boolean" != typeof i && (a = t.getAttributeNode(r)) && a.nodeValue !== !1 ? r.toLowerCase() :
									n
							},
							set: function(t, n, r) {
								var a;
								return n === !1 ? e.removeAttr(t, r) : (a = e.propFix[r] || r, a in t && (t[a] = !0), t.setAttribute(r,
									r.toLowerCase())), r
							}
						}, f.test(c) && r("jQuery.fn.attr('" + c + "') may use property instead of attribute")), s.call(e, t, a, i))
					}, e.attrHooks.value = {
						get: function(e, t) {
							var n = (e.nodeName || "").toLowerCase();
							return "button" === n ? u.apply(this, arguments) : ("input" !== n && "option" !== n && r(
								"jQuery.fn.attr('value') no longer gets properties"), t in e ? e.value : null)
						},
						set: function(e, t) {
							var a = (e.nodeName || "").toLowerCase();
							return "button" === a ? c.apply(this, arguments) : ("input" !== a && "option" !== a && r(
								"jQuery.fn.attr('value', val) no longer sets properties"), e.value = t, n)
						}
					};
					var g, h, v = e.fn.init,
						m = e.parseJSON,
						y = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
					e.fn.init = function(t, n, a) {
						var i;
						return t && "string" == typeof t && !e.isPlainObject(n) && (i = y.exec(e.trim(t))) && i[0] && ("<" !== t.charAt(
								0) && r("$(html) HTML strings must start with '<' character"), i[3] && r(
								"$(html) HTML text after last tag is ignored"), "#" === i[0].charAt(0) && (r(
								"HTML string cannot start with a '#' character"), e.error("JQMIGRATE: Invalid selector string (XSS)")), n &&
							n.context && (n = n.context), e.parseHTML) ? v.call(this, e.parseHTML(i[2], n, !0), n, a) : v.apply(this,
							arguments)
					}, e.fn.init.prototype = e.fn, e.parseJSON = function(e) {
						return e || null === e ? m.apply(this, arguments) : (r("jQuery.parseJSON requires a valid JSON string"), null)
					}, e.uaMatch = function(e) {
						e = e.toLowerCase();
						var t = /(chrome)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) ||
							/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || 0 > e.indexOf("compatible") &&
							/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e) || [];
						return {
							browser: t[1] || "",
							version: t[2] || "0"
						}
					}, e.browser || (g = e.uaMatch(navigator.userAgent), h = {}, g.browser && (h[g.browser] = !0, h.version = g.version),
						h.chrome ? h.webkit = !0 : h.webkit && (h.safari = !0), e.browser = h), a(e, "browser", e.browser,
						"jQuery.browser is deprecated"), e.sub = function() {
						function t(e, n) {
							return new t.fn.init(e, n)
						}
						e.extend(!0, t, this), t.superclass = this, t.fn = t.prototype = this(), t.fn.constructor = t, t.sub = this.sub,
							t.fn.init = function(r, a) {
								return a && a instanceof e && !(a instanceof t) && (a = t(a)), e.fn.init.call(this, r, a, n)
							}, t.fn.init.prototype = t.fn;
						var n = t(document);
						return r("jQuery.sub() is deprecated"), t
					}, e.ajaxSetup({
						converters: {
							"text json": e.parseJSON
						}
					});
					var b = e.fn.data;
					e.fn.data = function(t) {
						var a, i, o = this[0];
						return !o || "events" !== t || 1 !== arguments.length || (a = e.data(o, t), i = e._data(o, t), a !== n && a !==
							i || i === n) ? b.apply(this, arguments) : (r("Use of jQuery.fn.data('events') is deprecated"), i)
					};
					var j = /\/(java|ecma)script/i,
						w = e.fn.andSelf || e.fn.addBack;
					e.fn.andSelf = function() {
						return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"), w.apply(this, arguments)
					}, e.clean || (e.clean = function(t, a, i, o) {
						a = a || document, a = !a.nodeType && a[0] || a, a = a.ownerDocument || a, r("jQuery.clean() is deprecated");
						var s, u, c, l, d = [];
						if (e.merge(d, e.buildFragment(t, a).childNodes), i) {
							for (c = function(e) {
									return !e.type || j.test(e.type) ? o ? o.push(e.parentNode ? e.parentNode.removeChild(e) : e) : i.appendChild(
										e) : n
								}, s = 0; null != (u = d[s]); s++) {
								e.nodeName(u, "script") && c(u) || (i.appendChild(u), u.getElementsByTagName !== n && (l = e.grep(e.merge(
									[], u.getElementsByTagName("script")), c), d.splice.apply(d, [s + 1, 0].concat(l)), s += l.length))
							}
						}
						return d
					});
					var Q = e.event.add,
						x = e.event.remove,
						k = e.event.trigger,
						N = e.fn.toggle,
						T = e.fn.live,
						M = e.fn.die,
						S = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
						C = RegExp("\\b(?:" + S + ")\\b"),
						H = /(?:^|\s)hover(\.\S+|)\b/,
						A = function(t) {
							return "string" != typeof t || e.event.special.hover ? t : (H.test(t) && r(
								"'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"), t && t.replace(H,
								"mouseenter$1 mouseleave$1"))
						};
					e.event.props && "attrChange" !== e.event.props[0] && e.event.props.unshift("attrChange", "attrName",
						"relatedNode", "srcElement"), e.event.dispatch && a(e.event, "handle", e.event.dispatch,
						"jQuery.event.handle is undocumented and deprecated"), e.event.add = function(e, t, n, a, i) {
						e !== document && C.test(t) && r("AJAX events should be attached to document: " + t), Q.call(this, e, A(t ||
							""), n, a, i)
					}, e.event.remove = function(e, t, n, r, a) {
						x.call(this, e, A(t) || "", n, r, a)
					}, e.fn.error = function() {
						var e = Array.prototype.slice.call(arguments, 0);
						return r("jQuery.fn.error() is deprecated"), e.splice(0, 0, "error"), arguments.length ? this.bind.apply(this,
							e) : (this.triggerHandler.apply(this, e), this)
					}, e.fn.toggle = function(t, n) {
						if (!e.isFunction(t) || !e.isFunction(n)) {
							return N.apply(this, arguments)
						}
						r("jQuery.fn.toggle(handler, handler...) is deprecated");
						var a = arguments,
							i = t.guid || e.guid++,
							o = 0,
							s = function(n) {
								var r = (e._data(this, "lastToggle" + t.guid) || 0) % o;
								return e._data(this, "lastToggle" + t.guid, r + 1), n.preventDefault(), a[r].apply(this, arguments) || !1
							};
						for (s.guid = i; a.length > o;) {
							a[o++].guid = i
						}
						return this.click(s)
					}, e.fn.live = function(t, n, a) {
						return r("jQuery.fn.live() is deprecated"), T ? T.apply(this, arguments) : (e(this.context).on(t, this.selector,
							n, a), this)
					}, e.fn.die = function(t, n) {
						return r("jQuery.fn.die() is deprecated"), M ? M.apply(this, arguments) : (e(this.context).off(t, this.selector ||
							"**", n), this)
					}, e.event.trigger = function(e, t, n, a) {
						return n || C.test(e) || r("Global events are undocumented and deprecated"), k.call(this, e, t, n || document,
							a)
					}, e.each(S.split("|"), function(t, n) {
						e.event.special[n] = {
							setup: function() {
								var t = this;
								return t !== document && (e.event.add(document, n + "." + e.guid, function() {
									e.event.trigger(n, null, t, !0)
								}), e._data(this, n, e.guid++)), !1
							},
							teardown: function() {
								return this !== document && e.event.remove(document, n + "." + e._data(this, n)), !1
							}
						}
					})
				}(jQuery, window);
			var t, x, y;
			(function($) {
				jQuery.fn.PositionFixed = function(options) {
					var defaults = {
						css: "",
						x: 0,
						y: 0
					};
					var o = jQuery.extend(defaults, options);
					var isIe6 = false;
					if ($.browser.msie && parseInt($.browser.version) == 6) {
						isIe6 = true
					}
					var html = $("html");
					if (isIe6 && html.css("backgroundAttachment") !== "fixed") {
						html.css("backgroundAttachment", "fixed")
					}
					return this.each(function() {
						var domThis = $(this)[0];
						var objThis = $(this);
						if (isIe6) {
							var left = parseInt(o.x) - html.scrollLeft(),
								top = parseInt(o.y) - html.scrollTop();
							objThis.css("position", "absolute");
							domThis.style.setExpression("left", "eval((document.documentElement).scrollLeft + " + o.x + ') + "px"');
							domThis.style.setExpression("top", "eval((document.documentElement).scrollTop + " + o.y + ') + "px"')
						} else {
							objThis.css("position", "fixed").css("top", o.y).css("left", o.x)
						}
					})
				}
			})(jQuery);
			var Floaters = {
				delta: 0.08,
				queue: null,
				collection: {},
				items: [],
				addItem: function(Obj, left, top, ani) {
					Obj.style["top"] = top + "px";
					Obj.style["left"] = left + "px";
					var newItem = {
						object: Obj,
						oLeft: left,
						oTop: top
					};
					this.items[this.items.length] = newItem;
					this.delta = ani ? ani : this.delta
				},
				sPlay: function() {
					this.collection = this.items;
					this.queue = setInterval(function() {
						metplay()
					}, 10)
				}
			};

			function checkStandard() {
				var scrollY;
				if (document.documentElement && document.documentElement.scrollTop) {
					scrollY = document.documentElement.scrollTop
				} else {
					if (document.body) {
						scrollY = document.body.scrollTop
					}
				}
				return scrollY
			}

			function metplay() {
				var diffY = checkStandard();
				for (var i in Floaters.collection) {
					var obj = Floaters.collection[i].object;
					var obj_y = Floaters.collection[i].oTop;
					var total = diffY + obj_y;
					if (obj.offsetTop != total) {
						var oy = (total - obj.offsetTop) * Floaters.delta;
						oy = (oy > 0 ? 1 : -1) * Math.ceil(Math.abs(oy));
						obj.style["top"] = obj.offsetTop + oy + "px"
					} else {
						clearInterval(Floaters.queue);
						Floaters.queue = setInterval(function() {
							metplay()
						}, 10)
					}
				}
			}

			function onlineclose() {
				$("#onlinebox").hide();
				return false
			}

			function olne_domx(type, onlinex) {
				var maxr = document.body.offsetWidth - $("#onlinebox").width();
				if (type > 1) {
					onlinex = document.body.scrollWidth - $("#onlinebox").width() - onlinex
				}
				if (onlinex < 0) {
					onlinex = 0
				}
				if (onlinex > maxr) {
					onlinex = maxr;
					if ($.browser.msie && parseInt($.browser.version) == 6) {
						onlinex = maxr - 18
					}
				}
				return onlinex
			}

			function olne_domx_op(type, onlinex) {
				var zwd = document.documentElement.clientWidth;
				var oboxw = $("#onlinebox").width();
				oboxw = oboxw == 0 ? $("#onlinebox .onlinebox-conbox").width() : oboxw;
				var maxr = zwd - oboxw;
				if (type > 1) {
					onlinex = zwd - oboxw - onlinex
				}
				if (onlinex < 0) {
					onlinex = 0
				}
				if (onlinex > maxr) {
					onlinex = maxr;
					if ($.browser.msie && parseInt($.browser.version) == 6) {
						onlinex = maxr - 18
					}
				}
				return onlinex
			}

			function olne_dd_wd(d) {
				var w = 0;
				d.each(function() {
					w = w > $(this).outerWidth(true) ? w : $(this).outerWidth(true)
				});
				return w
			}

			function olne_mouse_on(t, my, nex, type) {
				if (t == 1) {
					my.hide();
					nex.show();
					var dmk = $("div.onlinebox-conbox .online-tbox").size() ? $("div.onlinebox-conbox .online-tbox").outerWidth(
						true) : 0;
					var dt = olne_dd_wd($("div.onlinebox-conbox dd"));
					dt = dt > dmk ? dt : $("div.onlinebox-conbox .online-tbox").outerWidth(true);
					if (dt <= 0) {
						dt = 100
					}
					nex.css({
						"width": dt + "px"
					})
				} else {
					nex.css({
						"position": "absolute",
						"left": "0px"
					});
					nex.hide();
					my.show()
				}
				olne_resize()
			}

			function olne_resize() {
				mx = Number(olne_domx_op(t, x));
				my = Number(y);
				if (t > 0 && t < 3) {
					var floatDivr = document.getElementById("onlinebox");
					Floaters.addItem(floatDivr, mx, my);
					Floaters.sPlay()
				} else {
					$("#onlinebox").PositionFixed({
						x: mx,
						y: my
					})
				}
			}

			function olne_mouse(dom, type) {
				var nex = dom.next("div.onlinebox-conbox");
				if ($(".onlinebox_2").size() > 0) {
					dom.click(function() {
						olne_mouse_on(1, $(this), nex, type)
					})
				} else {
					dom.hover(function() {
						olne_mouse_on(1, $(this), nex, type)
					}, function() {})
				}
				$("#onlinebox .onlinebox-top").click(function() {
					if (!nex.is(":hidden")) {
						olne_mouse_on(0, dom, nex, type)
					}
				});
				textWrap($(".onlinebox-showbox span"))
			}

			function textWrap(my) {
				var text = "",
					txt = my.text();
				txt = txt.split("");
				for (var i = 0; i < txt.length; i++) {
					text += txt[i] + "<br/>"
				}
				my.html(text)
			}

			function olne_app(msg, type, mxq, myq) {
				$("body").append(msg);
				mx = Number(olne_domx_op(type, mxq));
				my = Number(myq);
				if (type > 0 && type < 3) {
					var floatDivr = document.getElementById("onlinebox");
					Floaters.addItem(floatDivr, mx, my);
					Floaters.sPlay()
				} else {
					$("#onlinebox").PositionFixed({
						x: mx,
						y: my
					})
				}
				$(window).resize(function() {
					olne_resize()
				});
				$("#onlinebox").show();
				if ($("div.onlinebox-showbox").size() > 0) {
					olne_mouse($("div.onlinebox-showbox"), type)
				}
			}
			$(document).ready(function() {
				var url = M["weburl"] + "include/online.php?lang=" + M["lang"];
				$.ajax({
					type: "POST",
					url: url,
					dataType: "json",
					success: function(msg) {
						t = msg.t, x = msg.x, y = msg.y;
						if (t != 3) {
							olne_app(msg.html, t, x, y)
						}
					}
				})
			})
		}
		if (c.met_stat == 1) {
			var navurl = M["classnow"] == 10001 ? "" : "../";
			var stat_d = M["classnow"] + "-" + M["id"] + "-" + M["lang"];
			var url = M["weburl"] + "include/stat/stat.php?type=para&u=" + navurl + "&d=" + stat_d;
			$.getScript(url)
		}
	}
});
